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(エクセル)
-
findは動くがfindnextがマクロで動きません。記述は同じはずなのですが…
Visual Basic(VBA)
-
-
4
VBAのVLOOKUPで複数列を検索できますでしょうか。
Visual Basic(VBA)
-
5
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
-
6
エクセルVBAでオートフィルター最上行を取得するには
Excel(エクセル)
-
7
別のシートから値を取得するとき
Visual Basic(VBA)
-
8
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
9
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
10
VBAのFind関数で結合セルを検索するとヒットしない
Visual Basic(VBA)
-
11
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
12
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
13
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
14
エクセルVBAのIf,Then 構文でOr条件とAnd条件の結合方法?
Excel(エクセル)
-
15
VBAを使って検索したセルをコピーして別の場所に貼り付ける。
Visual Basic(VBA)
-
16
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
17
Excelのセルにユーザー名を表示する方法
Excel(エクセル)
-
18
UserForm1.Showでエラーになります。
工学
-
19
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
20
EXCELで特定のセルに表示された項目をヘッダーやフッターに出力するには
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VLOOKUPの列番号の最大は?
-
エクセルで離れた列を選択して...
-
「段」と「行」の違いがよくわ...
-
LEFT関数とIF関数の組み合わせ...
-
エクセルのソートで、数字より...
-
Alt+Shift+↑を一括で行うには、...
-
VBA 指定した列にある日時デー...
-
Excelの行数、列数を増やしたい...
-
エクセルで住所を県と市・郡と...
-
VBA
-
「コピー → 行列を入れ替えて貼...
-
エクセルマクロPrivate Subを複...
-
エクセルで複数列の検索をマク...
-
エクセルマクロで表の途中の集...
-
(VBA)Excelの特定の範囲にデー...
-
エクセルで最初の行や列を開け...
-
エクセル マクロ 範囲指定で...
-
エクセルマクロの組み方
-
EXCELVBAでリストボックス複数...
-
横軸を日付・時間とするグラフ化
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで離れた列を選択して...
-
VLOOKUPの列番号の最大は?
-
「段」と「行」の違いがよくわ...
-
LEFT関数とIF関数の組み合わせ...
-
VBA 指定した列にある日時デー...
-
CSVファイルの「0落ち」にVBA
-
エクセルで住所を県と市・郡と...
-
Excelの行数、列数を増やしたい...
-
エクセルで複数列の検索をマク...
-
エクセルマクロの組み方
-
Alt+Shift+↑を一括で行うには、...
-
えABのある列って
-
エクセルのソートで、数字より...
-
エクセル マクロ 範囲指定で...
-
VBAで結合セルを転記する法を教...
-
VBAで別ブックの列を検索し、該...
-
エクセルマクロPrivate Subを複...
-
列方向、行方向の定義
-
リストからデータを紐付けしたい
-
Accessのレポートで繰り返し表...
おすすめ情報