- 締切済み
エクセルで表の抽出
Windows2000でExcel2000を使っています。 一応VBを使っています。 そこで、 荷主マスターみたいな表があります。 A列にふりがな、B列に漢字、C列に4月の売上個数・・・O列に3月の売上個数が入っています。 表は、あいうえお順でソートされているのですが、 そのうちの、ア行の1月分だけ抽出し別の場所に貼り付けたいのですがうまくいきません。(当然その後に、カ行の1月分・・・ン行の1月分と作業をする。) A B C ・・・・ M N O ふりがな 漢字 4月 ・・・・1月 2月 3月 あ 亜 2 3 5 3 い 井 4 2 2 う 卯 1 2 か 化 1 2 4 さ 差 3 5 6 2 こんな感じの表です。 つまり今月は、A列のア行 B列のア行 M列のア行を抽出する。 来月は、AとBは同じで2月N列を抽出する。 マクロを使い自動化したいので、VBに詳しい方教えてください。 分かりづらい質問で申し訳ありませんが、よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- papayuka
- ベストアンサー率45% (1388/3066)
あんまりスマートじゃないけど、こんな感じですか? 試すならテスト環境で。 4月~3月のセルには、日付型を書式設定した「x月」ではなく、テキストの「x月」が入っているとします。 Sub Test() Dim ws As Worksheet, tws As Worksheet Dim stRow As Long, edRow As Long, fR, fMonth fMonth = Application.InputBox("対象月を指定して下さい。", _ "対象月", Format(Date, "m月"), Type:=2) If fMonth = False Then Exit Sub Set tws = ActiveSheet With tws Set fR = .Cells.Find(fMonth, .Range("A1"), lookat:=xlWhole) If fR Is Nothing Then Exit Sub stRow = 2: edRow = 2 Do While .Cells(stRow, 1).Value <> "" Do While .Cells(stRow, 1).Value = .Cells(edRow + 1, 1).Value edRow = edRow + 1 Loop Application.Union(.Range(.Cells(stRow, 1), .Cells(edRow, 2)), _ .Range(.Cells(stRow, fR.Column), .Cells(edRow, fR.Column))).Copy Set ws = Worksheets.Add(after:=Worksheets(Worksheets.Count)) On Error Resume Next ws.Name = .Cells(stRow, 1).Text & "-" & fR.Text ws.Range("A1") = .Range("A1"): ws.Range("B1") = .Range("B1") ws.Range("C1") = .Range(fR.Address) ws.Range("A2").PasteSpecial xlPasteAll Application.CutCopyMode = False stRow = edRow + 1 .Activate Loop End With End Sub
お礼
回答ありがとうございます。 うーん、勉強不足のせいでしょう。難しいですね。 これを参考にがんばってみます。