Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5061 / 13646 ツリー ←次へ | 前へ→

【52756】条件によって別シートに行ごとコピーする poo 07/12/1(土) 17:08 質問[未読]
【52757】Re:条件によって別シートに行ごとコピーする かみちゃん 07/12/1(土) 17:12 発言[未読]
【52777】Re:条件によって別シートに行ごとコピーする poo 07/12/3(月) 14:26 質問[未読]
【52782】Re:条件によって別シートに行ごとコピーする じゅんじゅん 07/12/3(月) 21:15 発言[未読]
【52803】Re:条件によって別シートに行ごとコピーする poo 07/12/4(火) 15:47 質問[未読]
【52804】Re:条件によって別シートに行ごとコピーする じゅんじゅん 07/12/4(火) 16:43 発言[未読]
【52826】Re:条件によって別シートに行ごとコピーする poo 07/12/5(水) 10:53 お礼[未読]

【52756】条件によって別シートに行ごとコピーする
質問  poo  - 07/12/1(土) 17:08 -

引用なし
パスワード
   条件の指定がわからず困ってました。

シート1にAccessからコピーしたのを貼り付けます。

貼り付けはA5〜U列(行はその都度違います。)

●条件はB5にU・J・T・Hのいずれかがが入っている場合はシート2へ
 A5〜U5(1行丸ごとでも可)を貼り付け
●いずれも該当しなければシート3のA5〜U5(1行丸ごとでも可)へ
 貼り付け

という具合にしたいのです。初心者で色々調べてるうちに
余計にわからなくなってしまいました。
ご協力よろしくお願いいたします。

【52757】Re:条件によって別シートに行ごとコピー...
発言  かみちゃん  - 07/12/1(土) 17:12 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>●条件はB5にU・J・T・Hのいずれかがが入っている場合はシート2へ
> A5〜U5(1行丸ごとでも可)を貼り付け
>●いずれも該当しなければシート3のA5〜U5(1行丸ごとでも可)へ
> 貼り付け

貼付先は、Sheet2またはSheet3の5行目のようですが、上書きしていく感じなのですか?

>初心者で色々調べてるうちに余計にわからなくなってしまいました。

どこまで調べて、わからなくなったのでしょうか?
初心者でも自分でできている部分くらいは、提示できますよね?

【52777】Re:条件によって別シートに行ごとコピー...
質問  poo  - 07/12/3(月) 14:26 -

引用なし
パスワード
   ▼かみちゃん さん:
すいません。ご指摘ありがとうございます。

少し自分なりにわかりやすく変更しました。

A5〜U25までデーターを入れました。
A   B   C・・・・・・・・・・U
番号 日付  場所
この場所によってシート2・3に振り分けたいのです。
IFまではできたのですが、繰り返し処理がまずわかりませんでした。
また、シート2.3は出来れば上書きではなく、1行下に下げる
Rows("1:2").Insert Shift:=xlDownで処理をしていきたいです。   

Sub 修正中()
  (ここにFor i = 5 to 25 と入れましたがエラーになった為
   一旦削除して、IFだけつくりました)
   If Range("C5") = "場所1" Then
    Range("A5", "U5").Copy
    Worksheets("変換").Activate
    Range("A1", "U1").PasteSpecial Paste:=xlPasteValues
  ElseIf Worksheets("貼り付けシート").Range("C5") = "場所2" Then
    Range("A5", "U5").Copy
    Worksheets("変換").Activate
    Range("A1", "U1").PasteSpecial Paste:=xlPasteValues
  ElseIf Worksheets("貼り付けシート").Range("C5") = "場所3" Then
    Range("A5", "U5").Copy
    Worksheets("変換").Activate
    Range("A1", "U1").PasteSpecial Paste:=xlPasteValues
  ElseIf Worksheets("貼り付けシート").Range("C5") = "場所4" Then
    Range("A5", "U5").Copy
    Worksheets("変換").Activate
    Range("A1", "U1").PasteSpecial Paste:=xlPasteValues
Else
  Worksheets("変換").Activate
   Range("A1") = ""
End If
End Sub

【52782】Re:条件によって別シートに行ごとコピー...
発言  じゅんじゅん  - 07/12/3(月) 21:15 -

引用なし
パスワード
   新規Bookのシート1のセルA5〜A25に1〜5の値を入れる。
B列以降は適当なデータを入れる。
A5〜A25の値が1,3,5の時はシート2に、それ以外の時はシート3の
2行目にシート1のデータをコピー・挿入しシフトダウンする。

Sub test()
Dim ws As Worksheet
Dim r As Range
Dim sh As String

Set ws = Worksheets("Sheet1")
Application.ScreenUpdating = False

With ws
   For Each r In .Range("A5:A25")
     Select Case r.Value
         Case 1, 3, 5
           sh = "Sheet2"
         Case Else
           sh = "Sheet3"
     End Select
     r.EntireRow.Copy
     Worksheets(sh).Rows(2).Insert shift:=xlDown
     Application.CutCopyMode = False
   Next
End With
Application.ScreenUpdating = True
End Sub

新しいブックを作って試してみて下さい。
こうゆう感じの事かなと思ってます。

【52803】Re:条件によって別シートに行ごとコピー...
質問  poo  - 07/12/4(火) 15:47 -

引用なし
パスワード
   ▼じゅんじゅん さん:
ありがとうございます。
Select Caseを使えば良かったのですね。
助かりました。

また、できればもう1点教えて欲しいことがあります。

アクセスからデーターを貼り付けした際、数字が文字列となってしまいます。
これを解決するのに、一列ずつ【区切り位置】を使用して直しいますが、

Range("D4:D25").Select
  Selection.TextToColumns Destination:=Range("D4"), DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
    Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
    :=Array(1, 1), TrailingMinusNumbers:=True

A〜Uまで記録すると膨大になってしまいました。
すっきりさせる方法はありますか?
(Forなどの使い方を理解できずにこうなってます)

【52804】Re:条件によって別シートに行ごとコピー...
発言  じゅんじゅん  - 07/12/4(火) 16:43 -

引用なし
パスワード
   ▼poo さん:
>▼じゅんじゅん さん:
>ありがとうございます。
>Select Caseを使えば良かったのですね。
>助かりました。
>
>また、できればもう1点教えて欲しいことがあります。
>
>アクセスからデーターを貼り付けした際、数字が文字列となってしまいます。
>これを解決するのに、一列ずつ【区切り位置】を使用して直しいますが、
>
>Range("D4:D25").Select
>  Selection.TextToColumns Destination:=Range("D4"), DataType:=xlDelimited, _
>    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
>    Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
>    :=Array(1, 1), TrailingMinusNumbers:=True
>

Accessのデータについては詳しくないですが、
>A〜Uまで記録すると膨大になってしまいました。
>すっきりさせる方法はありますか?
>(Forなどの使い方を理解できずにこうなってます)
Forを使ってと言う事なら、

Sub test()
Dim r As Range
For Each r In Range("A4:U4")
   r.Resize(22).TextToColumns Destination:=r, DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
    Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
    :=Array(1, 1), TrailingMinusNumbers:=True
Next
End Sub

こうゆう事でいいのかな?

【52826】Re:条件によって別シートに行ごとコピー...
お礼  poo  - 07/12/5(水) 10:53 -

引用なし
パスワード
   ▼じゅんじゅん さん:
ありがとうございます。
すっきりしましたし、動作が速くなって助かりました。

また、わからない事が多々あると思いますが、
ご指導よろしくお願いします。

5061 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free