Exceldで、二つあるコンボボックスの選択した項目の検索、抽出、転記するVBAコードをご教授願います。
<詳細>
現在、請求先コンボボックスのデーターで、一つの項目の検索抽出転記は何とかできたのですが、コンボボックスで選んだ
データーの検索抽出転記できません。更に月度別のコンボボックスの月度合わせた検索抽出転記の、VBAコードを
どのように書いたら良いのか分からず困っています。
・検索シート = Sheets("印刷済") '検索 シート
データーは増減します。
・転記先シート = Sheets("月請求書データー") '貼付先シート
・検索条件①コンボボックス1の入力データー
検索場所Sheets("印刷済")の(C列) '検索
※現在は、4件だが増減します。
②コンボボックス2の入力データー
検索場所Sheets("印刷済")の(B列) '検索
日付データー(2020/2/29)となっており月度で検索したい。
※1~12まで登録。
1は1月度(1月度=2020/1/1~2020/1/31)の意味です。
2は2月度(2月度=2020/2/1~2020/2/29)
・検索ボタンは、CommandButton1 です。
上記二つの条件をコンボボックスで、選択して検索抽出、 Sheets("月請求書データー")へ
転記したい。
例えば、コンボボックス1の入力データー"A"を選択、コンボボック2の入力データー"1"(1月度=2020/1/1~2020/1/31)を選択して、2つの条件を検索抽出し転記する流れです。、
<添付画像から>
・添付画像は、印刷済シートに内容です。
コンボボックスを表示しています。
説明がうまくありませんが、お分かりになる方、ご教授のほどよろしくお願いします。
下記は、1つの項目(Aのみ)の検索、抽出、転記です。
Private Sub CommandButton1_Click()
Worksheets("月請求書データー").Range("A1:K1000").ClearContents'転記前にsheetクリア
Dim ws1 As Worksheet, ws2 As Worksheet
Dim rng As Range
Dim myStr, ra, rr
If myStr = "*" Then
Exit Sub
End If
Set ws1 = Sheets("印刷済") '検索 シート
Set ws2 = Sheets("月請求書データー") '貼付先シート
With ws1.Columns("C") '検索(C列)
Set rng = .Find(What:="A", Lookat:=xlWhole, After:=.Cells(.Cells.Count)) '完全一致
If rng Is Nothing Then 'なかったら
MsgBox "ありません", vbCritical, myStr & "?"
Else 'あったら
ra = rng.Address '最初に見つかったセルアドレス
Do
rr = rr + 1 'カウント
rng.EntireRow.Copy Destination:=ws2.Cells(rr, 1) '行のコピペ
Set rng = .FindNext(rng) '連続検索
Loop While rng.Address <> ra '繰り返し
Set rng = Nothing
End If
End With
End Sub
No.5ベストアンサー
- 回答日時:
naまろんさんが分からないところって、・・・
Set rng = .Find(What:="A",~
・・・の固定で”A"を指定しているところをコンボボックスの値にしたいということでしょうか?
であれば、こんな感じです。
Set rng = .Find(What:=ComboBox1.Value,
次に月度別の抽出ですが、・・・
行をコピペするループを次のようにしてみましょう。
Do
If Month(rng.Offset(, -1).Value) = CInt(ComboBox2.Value) Then
rr = rr + 1 'カウント
rng.EntireRow.Copy Destination:=ws2.Cells(rr, 1) '行のコピペ
End If
Set rng = .FindNext(rng) '連続検索
Loop While rng.Address <> ra '繰り返し
ただし、月でしか判別していないので、今年だろうが去年だろうが、月が一致していたら抽出されてしまいます。この辺はお好みで修正してみてください。
ありがとうございます。
ご教授頂いた内容で、OKでした。
対応して頂いたことに感謝しております。
誠に、ありがとうございました。
No.3
- 回答日時:
考えてみたら何も期間にこだわる必要はないですよね
双方『年月』を取り出して比較すれば良いだけだし
No.2
- 回答日時:
月度って『同年』で宜しいんでしょうかね?
Dim D_s As Date, D_e As Date
Dim i As Integer
For i = 1 To 12
D_s = DateSerial(Year(Date), i, 1)
D_e = DateAdd("d", -1, DateAdd("m", 1, D_s))
Debug.Print i & "月度 : " & D_s & "~" & D_e
Next
結果:
1月度 : 2020/01/01~2020/01/31
2月度 : 2020/02/01~2020/02/29
3月度 : 2020/03/01~2020/03/31
4月度 : 2020/04/01~2020/04/30
5月度 : 2020/05/01~2020/05/31
6月度 : 2020/06/01~2020/06/30
7月度 : 2020/07/01~2020/07/31
8月度 : 2020/08/01~2020/08/31
9月度 : 2020/09/01~2020/09/30
10月度 : 2020/10/01~2020/10/31
11月度 : 2020/11/01~2020/11/30
12月度 : 2020/12/01~2020/12/31
このような感じで。
For の i の代わりに Combobox の値を与えれば良いのかなと。
No.1
- 回答日時:
個人的にはFindメソッドより、
Excel(エクセル) VBA入門:フィルタオプション(AdvancedFilter)でのデータ抽出
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/v …
を用いた方が昔は楽でしたね。
抽出条件の『項目』と『条件』を表の範囲外又は別シートに作成し、『項目』に合わせた『条件』のセルに値を代入して抽出されるデータを他に吐き出すって感じで。
でも今は他の方法があったような回答も見かけましたね。
私自身Excel2002から一気に365まで最近飛びましたので、その間に追加されたのかなって思いますが不明です。(チラッと見ただけですので)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) ワークブック内すべて検索 2 2022/12/20 20:13
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Excel(エクセル) vba 転記するときの最終行について 2 2022/09/03 09:31
- Visual Basic(VBA) Sheet2の日付をキーにオートフィルターで2023年1月のデータを抽出し、Sheet3へ書き出すた 2 2023/03/06 23:57
- Excel(エクセル) 製品番号での整列と、検索に関して 3 2023/06/28 19:20
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) VBA 請求書自動作成 3 2022/04/24 01:58
- Visual Basic(VBA) エクセルVBAで教えて頂きたいのですが? 2 2022/12/31 20:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで、抽出したデータだ...
-
ACCESSのクエリー抽出条件にIIF...
-
PDFファイルから特定の文字を検...
-
ACCESSのフォームからレポート...
-
Accessの選択クエリの抽出条件...
-
「パラメータが少なすぎます。3...
-
AccessのWHERE句において、変数...
-
Excel 文字列から6桁の数値の抽出
-
X-Ripperというフリーウェアに...
-
【AccessVBA】レコードセットOp...
-
エクセルで色の付いたセルを抽...
-
PDFファイル/抽出許可され...
-
Access2003 式ビルダでのLike...
-
Access チェックボックスを利用...
-
取り込んだ画像からのスポイト...
-
Acccess クエリで演算結果を抽...
-
Access クエリ抽出条件の「Bet...
-
未審査請求包袋抽出表作成とは...
-
awkでスラッシュがある動的変数...
-
Accessで複数のクエリの抽出条件
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで、抽出したデータだ...
-
PDFファイルから特定の文字を検...
-
「パラメータが少なすぎます。3...
-
未審査請求包袋抽出表作成とは...
-
PDFファイル/抽出許可され...
-
Excel 文字列から6桁の数値の抽出
-
ACCESSのクエリー抽出条件にIIF...
-
X-Ripperというフリーウェアに...
-
エクセルで色の付いたセルを抽...
-
Accessの選択クエリの抽出条件...
-
AccessのWHERE句において、変数...
-
アクセス 同じフィールド(テキ...
-
エクセル関数で住所から丁目番...
-
ACCESS クエリ 条件以外のレ...
-
access クエリ yes/no型のクエ...
-
エクセル VBA メール本文に指定...
-
【AccessVBA】レコードセットOp...
-
Access チェックボックスを利用...
-
Accessで○ヶ月前以前を抽出する...
-
Access フォームコンボボック...
おすすめ情報
すみません
追記です。
日付の検索は、B列です。