
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
EXCEL VBA 指定したファイルが存在しない場合メッセージボックスを表示させる
Access(アクセス)
-
10
VBAで別モジュールへの変数の受け渡し方法
Visual Basic(VBA)
-
11
条件にマッチする行を抽出するVBAを教えてください
経営情報システム
-
12
Application.ScreenUpdating = Falseが効きません
Visual Basic(VBA)
-
13
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
14
エクセルVBAで、ある指定した文字を含む行だけを選択したいのですが、、 例えば、1〜20行目までに"1466171"
Excel(エクセル)
-
15
【Excel VBA】CSV取込時、数字の先頭の0を消えないようにするには?
Excel(エクセル)
-
16
【VBA】【ユーザーフォーム_ListBox】オートフィルタで絞りこんだ値だけを取り出したい
Visual Basic(VBA)
-
17
範囲指定したセルを1つずつ飛ばす方法
Visual Basic(VBA)
-
18
VBAコード記述に際して、コード全体を自動的にインデント付ける方法
Access(アクセス)
-
19
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
20
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
隣の枝がはみ出してきたら切ってもいい?最もやってはいけないことは?
「隣の木が越境してきて困るが、勝手に切ってはいけないと聞くし…」そう思っている方も多いだろう。実は、2023年4月1日に民法が改正され、この「越境枝」のルールが大きく変わった。 教えて!gooでも「境界から出て...
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「段」と「行」の違いがよくわ...
-
LEFT関数とIF関数の組み合わせ...
-
vba マージエリアの行数を非表...
-
Excel文字列一括変換
-
VBA エラーコード1004について
-
エクセルで離れた列を選択して...
-
Excelの行数、列数を増やしたい...
-
エクセルマクロPrivate Subを複...
-
【Excel VBA】条件を満たすデー...
-
VLOOKUPの列番号の最大は?
-
EXCELで、「CTRL+SHIFT」や「C...
-
Excel 区切り位置指定ウィザー...
-
エクセルのソートで、数字より...
-
CSVファイルの「0落ち」にVBA
-
罫線の斜線を自動で引くマクロ
-
【VBA】2つのシートの値を比較...
-
Excelのフィルター後の一番上の...
-
Worksheets メソッドは失敗しま...
-
VBAマクロ実行時エラーの修正に...
-
(UWSC)エクセルのセルの値を読...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「段」と「行」の違いがよくわ...
-
エクセルで離れた列を選択して...
-
Excelの行数、列数を増やしたい...
-
VLOOKUPの列番号の最大は?
-
vba マージエリアの行数を非表...
-
列方向、行方向の定義
-
VBA 指定した列にある日時デー...
-
エクセル マクロ 範囲指定で...
-
Alt+Shift+↑を一括で行うには、...
-
LEFT関数とIF関数の組み合わせ...
-
横軸を日付・時間とするグラフ化
-
Excel文字列一括変換
-
VBAで結合セルを転記する法を教...
-
最近急にVBAの処理速度が遅くな...
-
EXCEL VBA 文字列から電話番号...
-
CSVファイルの「0落ち」にVBA
-
VBAで別ブックの列を検索し、該...
-
リストからデータを紐付けしたい
-
エクセルで最初の行や列を開け...
-
ListViewで列を指定して表示さ...
おすすめ情報