こんにちは
条件に合う文字列があった場合に該当するシートへ順番にセルをコピーをしたいです。
調べながら作成したものではうまくいかず、皆様の知識をお借りしたいと思い投稿させて頂きました。
目的:シート”dddd”の1列目6行目以下~を参照し
①aaaaがあった場合はシートaaaaの2列目8行目から順に転記
⓶bbbbがあった場合はシートbbbbの〃
③ccccがあった場合はシートccccの〃
を行いたいと考えています。(操作はシートddddで行っています)
色々見ながら下記で操作したところ繰り返し作業が行われない状態でどの様にしたら良いかわからず
投稿させて頂きました。 お手数ですがご指摘アドバイスなど宜しくお願い致します。
Sub tenki3()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim ws3 As Worksheet
Dim ws4 As Worksheet
Dim i As Variant
Dim j As Variant
Set ws1 = Worksheets("aaaa")
Set ws2 = Worksheets("bbbb")
Set ws3 = Worksheets("cccc")
Set ws4 = Worksheets("dddd")
lRow = ws4.UsedRange.Rows.Count
For i = 6 To Cells(Rows.Count, 1).End(xlUp).Row
j = 8
If Cells(i, 1) = "aaaa" Then
ws1.Cells(j, 1) = ws4.Cells(i, 2)
End If
j = 8 + 1
Next i
End Sub
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
No.2です。
>転記先のセルを8行目にするためには・・・
というコトですが、前回投稿した中に
>(各シートのA7セルには項目名が入っている!という前提です)
という大前提がありましたよね。
>wS.Cells(Rows.Count, "A").End(xlUp).Offset(1) = .Cells(i, "B")
でA列の最終行の一つ下のセルに順に該当データを表示するようにしていますので、
A7セルに項目など何らかのデータがないととんでもないところに表示されてしまいます。
A7セルに何もデータがない場合は変数を一つ増やして
行を指定するしかないかも・・・m(_ _)m
No.3
- 回答日時:
こんにちは、
すでに回答が出ていますが、参考までにオートフィルタの場合のサンプルです。
Sub Sample3()
Dim lRow As Long
Dim keyword
With Worksheets("dddd")
lRow = .UsedRange.Rows.Count
For Each keyword In Array("aaaa", "bbbb", "cccc")
If Application.CountIf(.Range("A6:A" & lRow), keyword) > 0 Then
.UsedRange.AutoFilter Field:=1, Criteria1:=keyword
.Range("B6:B" & lRow).SpecialCells(xlCellTypeVisible).Copy Sheets(keyword).Range("B8")
.AutoFilterMode = False
End If
Next
End With
End Sub
セルの書式もコピーされます。
値のみの場合は、PasteSpecialメソッドの Paste:=xlPasteValues
Application.CutCopyMode = False
に変更、追加してください。
ご回答有難うございます。
オートフィルタにて作成してみたところ、書式が違うためコピーできないと出てしまうため現在奮闘中です。
御教授頂き有難うございました。
No.2
- 回答日時:
こんにちは!
余計なお世話かもしれませんが・・・
>(操作はシートddddで行っています
とありますが、「dddd」シートのシートモジュールにしているのでしょうか?
複数のシートにわたって操作する場合は「標準モジュール」にした方がエラーが少ないと思います。
(もちろん、シートモジュールでもエラーなく動くことも多くあります)
さて本題ですが、「dddd」シートのA列には各シート名が入っているのでしょうかね。
一例です。
(各シートのA7セルには項目名が入っている!という前提です)
Sub Sample1()
Dim i As Long, k As Long
Dim wS As Worksheet
Dim myFlg As Boolean
Dim myAry
myAry = Array("aaaa", "bbbb", "cccc")
With Worksheets("dddd")
For i = 6 To .Cells(Rows.Count, "A").End(xlUp).Row
For k = 0 To UBound(myAry)
If .Cells(i, "A") = myAry(k) Then
myFlg = True
Exit For
End If
Next k
If myFlg = True Then
Set wS = Worksheets(myAry(k))
wS.Cells(Rows.Count, "A").End(xlUp).Offset(1) = .Cells(i, "B")
End If
myFlg = False
Next i
End With
End Sub
※ データ量が多い場合は、No.1さんが回答されている
オートフィルタの方が速いかも・・・m(_ _)m
tom04様
とてもまとまった式を記載していただき有難うございます。
ご指摘の通り標準モジュールにて運用予定です。
1点ご質問させて下さい。 記載していただいた内容にて動作致しましたが、転記先のセルを8行目にするためにはどうしたらよいでしょうか?
ご質問ばかりで申し訳ありません。
(記載内容のなかで色々試してみましたが触れば触るほど動作しなくなって
しまいました)
No.1
- 回答日時:
どのシートへの値が見つかってもそうでなくても変数:j はドンドン加算されていきますしね。
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/v …
オートフィルタを使い1つの値で抽出しそのシートにコピペ。
一旦解除して次の値で同様に、更に次の値でって感じでやっては如何でしょう。
フィルタをかける位置・貼り付ける位置に注意していけば可能な気もしますよ。
過去の質問でもいくつかはあると思いますし。(Autofilterで検索してみると)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
excelのマクロで該当処理できな...
-
ユーザーフォームに入力したデ...
-
同じ作業を複数のシートに実行...
-
【Excel VBA】Worksheets().Act...
-
XL:BeforeDoubleClickが動かない
-
特定の文字を含むシートだけマ...
-
Worksheet_Changeの内容を標準...
-
実行時エラー'1004': WorkSheet...
-
【ExcelVBA】全シートのセルの...
-
IFステートの中にWithステート...
-
エクセルで通し番号を入れてチ...
-
ブック名、シート名を他のモジ...
-
別のシートから値を取得するとき
-
エクセルの特定のシートのみを...
-
Excelマクロのエラーを解決した...
-
エクセル・マクロ シートの非...
-
エクセルVBA Ifでシート名が合...
-
ExcelVBA:複数の特定のグラフ...
-
【VBAで、On Error が効かない】
-
セルの値によって、シート見出...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定の文字を含むシートだけマ...
-
excelのマクロで該当処理できな...
-
【ExcelVBA】全シートのセルの...
-
ユーザーフォームに入力したデ...
-
別のシートから値を取得するとき
-
ブック名、シート名を他のモジ...
-
実行時エラー'1004': WorkSheet...
-
Excelマクロのエラーを解決した...
-
XL:BeforeDoubleClickが動かない
-
シートが保護されている状態で...
-
エクセルのシート名変更で重複...
-
実行時エラー1004「Select メソ...
-
VBAで同じシート名のコピー時は...
-
エクセルで通し番号を入れてチ...
-
同じ作業を複数のシートに実行...
-
Excel VBA リンク先をシート...
-
ExcelのVBAのマクロで他のシー...
-
Vba UserformからExcelシートの...
-
【Excel VBA】Worksheets().Act...
-
VBA 存在しないシートを選...
おすすめ情報