vba初心者です。
色々なものを見て自分なりにやってはいるのですが、どうしても思い通りにいきません。
知識不足で申し訳ありませんが、お助けいただけると嬉しいです。
実際のdataはもっと多くのデータがあり、作業したいブック数も多いためマクロで作業したいと思っています。
dataシートにデータがあります。
1行目が指定したい項目になっています。
データの行数、列数はその時によって増減します。(A列の日付が増えたり、1行目の項目も増減します)
リストを作成して、
リストのC列以降にある項目を列ごと新規シートにコピー、その新規シートの名前はリストB列の名前にしたいです。
下の画像は分かりやすく列に色を付けていますが、実際のデータは色、罫線はなく書式は気にせずです。
説明がわかりずらかったら申し訳ありません。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
こんにちは!
「リスト」シートはお示しの画像通りの配置だとします。
一例です。
標準モジュールにしてください。
Sub Sample1()
Dim i As Long, j As Long, k As Long, lastRow As Long, cnt As Long
Dim sN As String, wS1 As Worksheet, wS2 As Worksheet
Dim c As Range, myFlg As Boolean
Application.ScreenUpdating = False
Set wS1 = Worksheets("data")
lastRow = wS1.Cells(Rows.Count, "A").End(xlUp).Row
With Worksheets("リスト")
For i = 2 To .Cells(Rows.Count, "B").End(xlUp).Row
sN = .Cells(i, "B")
For k = 3 To Worksheets.Count
If Worksheets(k).Name = sN Then
myFlg = True
Exit For
End If
Next k
If myFlg = False Then
Worksheets.Add after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = sN
End If
Set wS2 = Worksheets(sN)
wS2.Move after:=Worksheets(i)
wS2.Cells.ClearContents
For j = 3 To .Cells(i, Columns.Count).End(xlToLeft).Column
Set c = wS1.Rows(1).Find(what:=.Cells(i, j), LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then '//←念のため//
cnt = cnt + 1
Range(wS1.Cells(1, c.Column), wS1.Cells(lastRow, c.Column)).Copy wS2.Cells(1, cnt)
End If
Next j
cnt = 0
myFlg = False
Next i
End With
Application.ScreenUpdating = True
MsgBox "完了"
End Sub
こんな感じではどうでしょうか?m(_ _)m
No.3
- 回答日時:
No.1です。
別回答が出たようですのでそちらにお任せします。
ダミーデータ作成に手こずってますし、dataシートの項目名が増減するならリストの項目名も増減しそうです。
面倒なのでそれを一発で引き出そうとしましたけど、Accessとかの経験がないとしたらややこしく感じるでしょう。
純粋にExcelの機能のみの方がわかりやすいかなと思いましたので。
No.1
- 回答日時:
気になる点としては、
>作業したいブック数も多いため
質問の『1つのブックの方法がわかれば残りについてはそちらで応用できる』と言う事なのかどうか?(複数のブックに跨ってデータ収集をするのかしないのか?)
シート名:リストの表の座標位置は画像の通りなのか?
初心者って事はVBAの経験自体はある(程度は不明ですが)としてコードを提示されても理解が出来ると考えて構わないのか?
辺りですかね?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) 【困っています2】VBA 追加処理の記述を教えてください。 2 2022/08/26 11:42
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Excel(エクセル) VBA セルの値と同じ名前のシートにデータを貼り付けするやり方を教えてください 2 2022/05/17 16:26
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) エクセルについて教えてください。 3 2023/06/28 09:11
- Visual Basic(VBA) vbaについて 主に以下のような設定をしたいです。 Aブックの表の行数が20未満だったら Bブックの 1 2023/06/08 23:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別のシートから値を取得するとき
-
Excelマクロのエラーを解決した...
-
【Excel VBA】Worksheets().Act...
-
同じ作業を複数のシートに実行...
-
ユーザーフォームに入力したデ...
-
XL:BeforeDoubleClickが動かない
-
特定の文字を含むシートだけマ...
-
excelのマクロで該当処理できな...
-
VBA 入力月で該当シートを選択...
-
IFステートの中にWithステート...
-
【ExcelVBA】全シートのセルの...
-
Worksheet_Changeの内容を標準...
-
ExcelVBA:複数の特定のグラフ...
-
ブック名、シート名を他のモジ...
-
エクセル・マクロ シートの非...
-
VBAで大量のファイルをシート名...
-
実行時エラー'1004': WorkSheet...
-
VBA 検索して一致したセル...
-
エクセルのシート名変更で重複...
-
エクセルVBAでダブルクリックを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
【ExcelVBA】全シートのセルの...
-
同じ作業を複数のシートに実行...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
ExcelVBA シート名を複数セルか...
-
XL:BeforeDoubleClickが動かない
-
実行時エラー'1004': WorkSheet...
-
VBA 存在しないシートを選...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
ブック名、シート名を他のモジ...
-
ExcelのVBAのマクロで他のシー...
-
【Excel VBA】Worksheets().Act...
-
エクセルのシート名変更で重複...
-
特定の文字を含むシートだけマ...
-
シートが保護されている状態で...
-
Excel マクロについての相談
-
VBA 検索して一致したセル...
おすすめ情報
1つのブックの方法がわかれば残りについては応用できる、ということで大丈夫です。
リストの座標は画像の通りになります。
(でもこの形にこだわっている訳ではないので、もし他に良い方法があればご教授頂けると嬉しいです。)
VBAは元々あるものを改良するのは出来る、程度の初心者ですm(_ _)m