
よろしくお願いします。
OS:WINDOWS 2000 PRO
環境:OFFICE 2003
エクセルのVBAについての質問です。
A列には数値コードが入っています。
そのコードは"1"と"2"に分類されてます。
マスターはSHEET1で、このマスターから
コード1はSHEET2に、
コード2はSHEET3に
振り分けたいのですが、どうもうまくいきません・・・
A列にはコード"1" "2"以外に空白セルが存在します。
空白セルは無視したい。。。
それとこのデータはDBから抽出するのですが、
抽出したデータは規則性はありません。
抽出するごとに"1"と"2"と"空白"はランダムなので、
LOOP等のマクロを調べてやってみたのですが、出来なくて週末になってしまいました。
A列からコード1とコード2を検索して、
ヒットしたコードの行ごと各SHEETにコピーして、
なおかつ各シートA列の入力されていない一番下の
セルにコピーしたいのですが、検索でヒットした
上から順番に。。。
これをLOOPと組合わせれば、各シートにコピーするのは
問題ないような気がします。。。
Sub AAA_BBB()
.Copy Worksheets("Sheet2").Range("A65536").End(xlUp).Offset(1, 0)
End With
End Sub
LOOP等で上記の条件を満たせる方法はないでしょうか。
ご教示を、よろしくお願いします。
No.1ベストアンサー
- 回答日時:
こんにちは。
For -Eachを使ってやってみました。
各シートの1行目はタイトル行になっているものとします。
Sub test()
Dim rng As Range
With Sheets("SHEET1")
For Each rng In _
Range(.Cells(1, 1), .Cells(.Range("A65536").End(xlUp).Row, 1))
If rng.Text = "コード1" Then
rng.EntireRow.Copy _
Sheets("SHEET2").Range("A65536").End(xlUp).Offset(1)
ElseIf rng.Text = "コード2" Then
rng.EntireRow.Copy _
Sheets("SHEET3").Range("A65536").End(xlUp).Offset(1)
End If
Next
End With
End Sub
No.2
- 回答日時:
こんばんは。
タイトル行は、Sheet1, Sheet2, Sheet3 にあるという前提にしないと、このコードはうまく行きません。最初のマスターのシートは、オートフィルタを使って抽出しています。これで参考にしてみてください。なお、コードは、myCodeのところを増やし、myShtsの中も、同じ数だけシートも増やせば、さらに増えても、ループは可能です。
'-----------------------------------------
Sub Sort_OtherSheetPaste()
Dim myShts() As Variant
Dim myCode() As Variant
Dim i As Integer
myCode = Array("1", "2") 'コード
myShts = Array("Sheet2", "Sheet3") 'ペーストされるシート
Application.ScreenUpdating = False
'マスターのシート
With Worksheets("Sheet1").Range("A1").CurrentRegion
For i = LBound(myCode()) To UBound(myCode())
.CurrentRegion.AutoFilter Field:=1, Criteria1:=myCode(i)
.Offset(1).Resize(.Rows.Count - 1).Copy Worksheets(myShts(i)).Range("A65536").End(xlUp).Offset(1)
Next i
.AutoFilter
End With
Application.ScreenUpdating = True
End Sub
なお、マクロの実行のダブりの検査は、現在のコードではなされていません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
JANコードとPOSコードは同じ?
-
1日に1人がこなせるプログラム...
-
VBAでファイルオープン後にコー...
-
変数名「cur」について
-
access2021 VBA メソッドまたは...
-
ACCESSユニオンクエリでORDER B...
-
COBOLの文法
-
特定行の背景色を変えたいのですが
-
Excelシート上で右クリックがで...
-
Nullの使い方が不正です。
-
access2003 クエリSQL文に...
-
JavaScriptの定数名が取り消し...
-
ACCESS VBA ヘッダなしCSVの入...
-
PreviewKeyDownイベントが2回...
-
VBA リストボックス(複数条件...
-
Excel VBAでOpenTextのFieldInf...
-
ランタイムのいらないプログラ...
-
Exel VBA 別ブックから該当デ...
-
エクセルVBA ユーザーフォーム...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
access2021 VBA メソッドまたは...
-
1日に1人がこなせるプログラム...
-
JANコードとPOSコードは同じ?
-
1、Rstudioで回帰直線を求める...
-
access2003 クエリSQL文に...
-
Exel VBA 別ブックから該当デ...
-
JavaScriptの定数名が取り消し...
-
COBOLの文法
-
VBAでファイルオープン後にコー...
-
変数名「cur」について
-
エクセルに見えない文字(JISX0...
-
オートフィルタで抽出結果に 罫...
-
Nullの使い方が不正です。
-
PreviewKeyDownイベントが2回...
-
【VB6】実行ファイルとした後、...
-
Javaの改行について
-
C# コードビハインドについて
-
Excelシート上で右クリックがで...
-
木偏に「久」
おすすめ情報