
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【excelVBA】Findメソッドで検索対象を複数列
Excel(エクセル)
-
複数の条件に合う行番号を取得するには
その他(Microsoft Office)
-
VBA 複数行の検索及び抽出
Excel(エクセル)
-
-
4
「Columns(A:C")」の列文字を数字にして表記したい"
Excel(エクセル)
-
5
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
6
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
7
VBAで、離れた複数の列に対して処理を施すには?
Visual Basic(VBA)
-
8
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
9
VBAで別モジュールへの変数の受け渡し方法
Visual Basic(VBA)
-
10
条件にマッチする行を抽出するVBAを教えてください
経営情報システム
-
11
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
12
Application.ScreenUpdating = Falseが効きません
Visual Basic(VBA)
-
13
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
14
EXCEL VBA 指定したファイルが存在しない場合メッセージボックスを表示させる
Access(アクセス)
-
15
【Excel VBA】CSV取込時、数字の先頭の0を消えないようにするには?
Excel(エクセル)
-
16
【VBA】【ユーザーフォーム_ListBox】オートフィルタで絞りこんだ値だけを取り出したい
Visual Basic(VBA)
-
17
エクセルVBAで、ある指定した文字を含む行だけを選択したいのですが、、 例えば、1〜20行目までに"1466171"
Excel(エクセル)
-
18
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
19
VBA エンターキーでイベントに入りたい。
PowerPoint(パワーポイント)
-
20
VBAコード記述に際して、コード全体を自動的にインデント付ける方法
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「段」と「行」の違いがよくわ...
-
土日の列幅の自動変更を教えて...
-
VBAで結合セルを転記する法を教...
-
エクセルで離れた列を選択して...
-
LEFT関数とIF関数の組み合わせ...
-
列方向、行方向の定義
-
VLOOKUPの列番号の最大は?
-
エクセル 文字列を日付に変更...
-
EXCELでデータの更新した後の列...
-
VBA 指定した列にある日時デー...
-
リストからデータを紐付けしたい
-
Excel文字列一括変換
-
列を1つずつ非表示にしたい
-
最終行に合計(最終行が列によ...
-
Excelの行数、列数を増やしたい...
-
Excel 区切り位置指定ウィザー...
-
エクセルで住所を県と市・郡と...
-
excelについて。
-
アクセス 取り込み時に、桁数(...
-
CSVファイルの「0落ち」にVBA
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「段」と「行」の違いがよくわ...
-
エクセルで離れた列を選択して...
-
Excelの行数、列数を増やしたい...
-
VLOOKUPの列番号の最大は?
-
vba マージエリアの行数を非表...
-
列方向、行方向の定義
-
VBA 指定した列にある日時デー...
-
エクセル マクロ 範囲指定で...
-
Alt+Shift+↑を一括で行うには、...
-
LEFT関数とIF関数の組み合わせ...
-
横軸を日付・時間とするグラフ化
-
Excel文字列一括変換
-
VBAで結合セルを転記する法を教...
-
最近急にVBAの処理速度が遅くな...
-
EXCEL VBA 文字列から電話番号...
-
CSVファイルの「0落ち」にVBA
-
VBAで別ブックの列を検索し、該...
-
リストからデータを紐付けしたい
-
エクセルで最初の行や列を開け...
-
ListViewで列を指定して表示さ...
おすすめ情報