![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
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も見ています
-
「どうして捨てられないの?」前妻の物を捨てられない男性の心理って?
前妻の物を捨てられない理由に加え、捨てるための手段はあるのかを専門家に聞いてみた!
-
複数の条件に合う行番号を取得するには
その他(Microsoft Office)
-
【excelVBA】Findメソッドで検索対象を複数列
Excel(エクセル)
-
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
-
4
VBAのVLOOKUPで複数列を検索できますでしょうか。
Visual Basic(VBA)
-
5
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
6
UserForm1.Showでエラーになります。
工学
-
7
findは動くがfindnextがマクロで動きません。記述は同じはずなのですが…
Visual Basic(VBA)
-
8
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
9
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
-
10
エクセルVBAでオートフィルター最上行を取得するには
Excel(エクセル)
-
11
VBAのFind関数で結合セルを検索するとヒットしない
Visual Basic(VBA)
-
12
別のシートから値を取得するとき
Visual Basic(VBA)
-
13
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
14
Excelのセルにユーザー名を表示する方法
Excel(エクセル)
-
15
VBA 列全体を別シートの列と比較し、同じ値がある行の、右端に値をコピーする方法について
Excel(エクセル)
-
16
VBAでの結合セルのコピー&ペースト
Excel(エクセル)
-
17
【EXCEL VBA】Range(A:A").Find(What:="キーワード")の1行目について"
Visual Basic(VBA)
-
18
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
19
エクセルマクロ:複数列 重複があった場合、メッセージと印入れる方法
Excel(エクセル)
-
20
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelの行数、列数を増やしたい...
-
エクセルで離れた列を選択して...
-
LEFT関数とIF関数の組み合わせ...
-
列方向、行方向の定義
-
エクセルマクロでオートフィル...
-
VLOOKUPの列番号の最大は?
-
エクセルで複数列の検索をマク...
-
エクセルマクロの組み方
-
エクセルのシートの大きさを変える
-
VBA Splitで「引数の数が一致...
-
土日の列幅の自動変更を教えて...
-
「段」と「行」の違いがよくわ...
-
VBAで重複データを合算したい(...
-
リストからデータを紐付けしたい
-
VBA 指定した列にある日時デー...
-
Excel/VBA ステップインと通常...
-
ExcelVBAでリストの項目に必要...
-
VBAで結合セルを転記する法を教...
-
エクセル マクロ 範囲指定で...
-
エクセル マクロ 範囲の値を上...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで離れた列を選択して...
-
「段」と「行」の違いがよくわ...
-
VLOOKUPの列番号の最大は?
-
LEFT関数とIF関数の組み合わせ...
-
VBA 指定した列にある日時デー...
-
Alt+Shift+↑を一括で行うには、...
-
エクセルで住所を県と市・郡と...
-
エクセルで複数列の検索をマク...
-
Excelの行数、列数を増やしたい...
-
VBAで結合セルを転記する法を教...
-
エクセルマクロPrivate Subを複...
-
エクセルマクロの組み方
-
CSVファイルの「0落ち」にVBA
-
列方向、行方向の定義
-
リストからデータを紐付けしたい
-
エクセルのソートで、数字より...
-
Excel文字列一括変換
-
エクセルで最初の行や列を開け...
-
エクセルでセル12個間隔で合...
-
エクセル マクロ 範囲指定で...
おすすめ情報