
A列、B列、C列に項目が、D列以降にデータが入っているシートがあります。
具体的には、
A列:商品名
B列:地域名
C列:店舗名
となっていて、ABCの順で昇順にソートがかけられています。
マクロの記録を使って一行だけを検索することは出来たのですが、(Selection.find(What:="商品名"~ となっていました)本当は、"商品名"+"地域名"+"店舗名"が一致するものを検索したいのです。
現在は、一行目で検索をかけて、後はactivecell.offset(*,*).value="地域名"のような感じで、しらみつぶしに探しています。
複数列で検索するよい方法などありましたら教えてください。
No.3ベストアンサー
- 回答日時:
#2 のWendy02 です。
後で、ミスを見つけましたので、こちらを優先させてください。見つからない場合のことを忘れていませした。(^^;
Sub Sample()
Dim nm As Variant
Dim buf As Variant, i As Long
Dim Rng As Range
With ActiveSheet
Set Rng = .Range("A1").CurrentRegion
.Range("A1:C1").Copy .Range("AA1")
For Each nm In Array("商品名", "地域名", "店舗名")
Do
buf = Application.InputBox(nm & "を入れてください。", Type:=2)
If VarType(buf) = vbBoolean Then Exit Sub
If buf = "" Then MsgBox nm & "を入れてください。"
Loop While buf = ""
.Range("AA2").Offset(, i).Value = buf
i = i + 1
Next nm
Rng.AdvancedFilter _
Action:=xlFilterInPlace, _
CriteriaRange:=.Range("AA1:AC2"), _
Unique:=False
On Error Resume Next
Rng.Offset(1).Resize(Rng.Rows.Count - 1). _
SpecialCells(xlCellTypeVisible).Select
If Err.Number > 0 Then
MsgBox "探しているものは見つかりません", vbCritical
Else
.ShowAllData
End If
On Error GoTo 0
End With
Set Rng = Nothing
Range("Criteria").ClearContents
End Sub
No.2
- 回答日時:
本来は、Find メソッドよりも、オートフィルターやフィルターオプションのほうがよいのでは?以下のようなものでダメなら、また、別のものを考えます。
Sub Sample()
Dim nm As Variant
Dim buf As Variant, i As Long
Dim Rng As Range
With ActiveSheet
Set Rng = .Range("A1").CurrentRegion
.Range("A1:C1").Copy .Range("AA1")
For Each nm In Array("商品名", "地域名", "店舗名")
Do
buf = Application.InputBox(nm & "を入れてください。", Type:=2)
If VarType(buf) = vbBoolean Then Exit Sub
If buf = "" Then MsgBox nm & "を入れてください。"
Loop While buf = ""
.Range("AA2").Offset(, i).Value = buf
i = i + 1
Next nm
Rng.AdvancedFilter _
Action:=xlFilterInPlace, _
CriteriaRange:=.Range("AA1:AC2"), _
Unique:=False
Rng.Offset(1).Resize(Rng.Rows.Count - 1). _
SpecialCells(xlCellTypeVisible).Select
.ShowAllData
End With
Set Rng = Nothing
Range("Criteria").ClearContents
End Sub
No.1
- 回答日時:
検索(Find)で探せるのは1つの項目です。
複数列の条件の場合は、オートフィルタを使うしかありません。
参考URL:http://www.officetanaka.net/excel/vba/db/index.htm
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 製品番号での整列と、検索に関して 3 2023/06/28 19:20
- Excel(エクセル) VLOOKUP が機能しない、その原因は何 ? 8 2022/10/19 12:06
- Visual Basic(VBA) 【VBA】指定した検索条件に一致したら別シートに転記したい 2 2022/03/23 16:14
- Excel(エクセル) エクセルで列の行の重複の検索方法を教えてください。 8 2022/10/11 14:51
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Excel(エクセル) エクセルの関数について A列(50個)のデータ(商品名)が、B列(100個)に、含まれているかを検索 2 2022/11/28 12:40
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Visual Basic(VBA) 【VBA】複数行あるカンマ区切りのデータを全て縦に一列に並べたい 5 2022/04/13 17:03
- Visual Basic(VBA) VBA 検索と入力 Excel ブック ぶぶぶ シート ししし 列V 検索対象の列です 最終行は、お 6 2023/05/17 01:40
- Excel(エクセル) Excelの列から検索して該当する行を別シートに転記するVBA 2 2022/12/20 09:35
このQ&Aを見た人はこんなQ&Aも見ています
-
【excelVBA】Findメソッドで検索対象を複数列
Excel(エクセル)
-
複数の条件に合う行番号を取得するには
その他(Microsoft Office)
-
VBA 複数行の検索及び抽出
Excel(エクセル)
-
-
4
VBAで、離れた複数の列に対して処理を施すには?
Visual Basic(VBA)
-
5
「Columns(A:C")」の列文字を数字にして表記したい"
Excel(エクセル)
-
6
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
7
EXCEL VBA 指定したファイルが存在しない場合メッセージボックスを表示させる
Access(アクセス)
-
8
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
9
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
10
findは動くがfindnextがマクロで動きません。記述は同じはずなのですが…
Visual Basic(VBA)
-
11
Worksheet.Change イベントを他のシートにも反映させる方法?
Visual Basic(VBA)
-
12
VBAのFind関数で結合セルを検索するとヒットしない
Visual Basic(VBA)
-
13
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
14
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
15
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
16
ExcelVBAでBookを開く時にファイル名の一部だけを指定で
Access(アクセス)
-
17
VBAで文字列を数値に変換したい
Excel(エクセル)
-
18
エクセルVBAで複数の条件を満たす検索方法
Visual Basic(VBA)
-
19
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
20
複数選択のListBoxでClickイベントが拾えません
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「段」と「行」の違いがよくわ...
-
エクセルで離れた列を選択して...
-
VLOOKUPの列番号の最大は?
-
エクセル マクロ 範囲指定で...
-
VBAで別ブックの列を検索し、該...
-
列方向、行方向の定義
-
Excelの行数、列数を増やしたい...
-
(VBA)Excelの特定の範囲にデー...
-
VBA 指定した列にある日時デー...
-
LEFT関数とIF関数の組み合わせ...
-
エクセル 1つのシートを日付で...
-
エクセル マクロ 範囲の値を上...
-
最近急にVBAの処理速度が遅くな...
-
VBA Splitで「引数の数が一致...
-
Excelの列から検索して該当する...
-
エクセルマクロ
-
Excel 2007で複合グラフ(折線...
-
Excel 区切り位置指定ウィザー...
-
Excel文字列一括変換
-
土日の列幅の自動変更を教えて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「段」と「行」の違いがよくわ...
-
エクセルで離れた列を選択して...
-
LEFT関数とIF関数の組み合わせ...
-
VLOOKUPの列番号の最大は?
-
VBA 指定した列にある日時デー...
-
Excelの行数、列数を増やしたい...
-
エクセルのソートで、数字より...
-
列方向、行方向の定義
-
VBAで別ブックの列を検索し、該...
-
エクセル マクロ 範囲指定で...
-
CSVファイルの「0落ち」にVBA
-
エクセルマクロPrivate Subを複...
-
エクセルで最初の行や列を開け...
-
最近急にVBAの処理速度が遅くな...
-
VBA
-
Excel文字列一括変換
-
エクセルで複数列の検索をマク...
-
エクセル マクロ 範囲の値を上...
-
横軸を日付・時間とするグラフ化
-
Alt+Shift+↑を一括で行うには、...
おすすめ情報