No.4ベストアンサー
- 回答日時:
Public Enum SearchPatternEnum
完全一致 = 0
先頭一致 = 1
後方一致 = 2
部分一致 = 3
End Enum
Public Function SearchData(検索値 As Variant, 検索範囲 As Range, Optional 列番号 As Long = 1, Optional 検索方法 As SearchPatternEnum, Optional 出力セル範囲 As Range = Nothing) As Variant
Dim RNG As Range
Dim SearchRng As Range
Dim SrchStr As String
Dim MaxRow As Long
Dim OutputRNG As Range
Dim MaxOutputPos As Long
Dim OutputPos As Long
If TypeOf 検索値 Is Range Then
SrchStr = 検索値.Value
Else
SrchStr = CStr(検索値)
End If
Select Case 検索方法
Case SearchPatternEnum.完全一致
'処理を行わない
Case SearchPatternEnum.先頭一致
SrchStr = SrchStr & "*"
Case SearchPatternEnum.後方一致
SrchStr = "*" & SrchStr
Case SearchPatternEnum.部分一致
SrchStr = "*" & SrchStr & "*"
End Select
If 出力セル範囲 Is Nothing Then
SearchData = CVErr(1)
Else
出力セル範囲.Clear
MaxOutputPos = 出力セル範囲.Cells.Count
OutputPos = 1
End If
For Each RNG In 検索範囲.Cells
If RNG.Value Like SrchStr Then
If MaxOutputPos = 0 Then
SearchData = Cells(RNG.Row, RNG.Column + (列番号 - 1))
Exit For
Else
出力セル範囲.Cells(OutputPos) = Cells(RNG.Row, RNG.Column + (列番号 - 1))
OutputPos = OutputPos + 1
If OutputPos > MaxOutputPos Then
Exit For
End If
End If
End If
If RNG.Row > RNG.Worksheet.UsedRange.Rows.Count Then
Exit For
End If
Next RNG
End Function
非常に丁寧な解答ありがとうございました。
これを見た瞬間、正直いって驚かされました。
ARCさんの回答を利用させていただきます。
あっという間に解決できそうです。
ほんとうにありがとうございます。
No.3
- 回答日時:
可能か不可能かってことでしたら、可能です。
部分一致を判定するためには、 Like 演算子を使います。
今回のご質問にはちょっと興味を惹かれましたので、暇つぶしに作ってみました。
参考にするなり、適当に改造するなりしてみてください。
解説が必要でしたら、補足をお願いします。
使い方
SearchDate(検索値, 検索範囲, 列番号, 検索方法, 出力セル範囲)
検索値: 略
検索範囲: 略
列番号: どの列を返すか。 1を指定すると、検索されたセルの内容を返す 2なら検索されたセルの右隣のセル内容、3なら更にその右隣のセル…
検索方法: 以下の値を数値で指定(完全一致=0, 先頭一致=1, 後方一致=2, 部分一致=3)
出力セル範囲: 検索した結果を書き出すセルの範囲 例: F1:F10
使用例:(A列に商品名,B列に価格が入力されている場合)
・適当なセルに
=SearchData("あ",A:B,2,3)
と記述(最初に検索された"あ"を含む商品の価格を表示する。)
・モジュールに
call SearchData("あ",Range("A:B"),1,部分一致 ,Range("F1:F100"))
call SearchData("あ",Range("A:B"),2,部分一致 ,Range("G1:G100"))
と記述(F1:F100の範囲に、"あ"を含む商品の一覧を出力,G1:G100に、その商品の価格を出力)
No.2
- 回答日時:
VBAがお解りになるなら、そんなに難しくはありません。
定期的に行う必要があるようでしたら、VBAでプログラム化したほうがべんりですよね。私は、同じようなことをVBAでやっています。
在庫表と注文表は別のブックにして、同時に両ブックを開き、照合もしています。
VBAなら、コマンドボタンにプログラムを貼り付けてやれば簡単です。
No.1
- 回答日時:
マクロを使わなくても、関数だけで可能みたいですね。
・Sheet2のA列に商品コード、B列に商品名、C列に在庫が入力されているものとします。
・Sheet1のA列に商品コードを入れると、B列、C列に該当する商品の名称、在庫を表示するものとします。
1:Sheet1のB2のセルに
=VLOOKUP($A$2,Sheet2!$A:$C,2)
と入力
2:Sheet1のC2のセルに
=VLOOKUP($A$2,Sheet2!$A:$C,3)
と入力
3:B2,C2のセルを下のほうまでコピー
以上の操作でOKな筈です。
不明点とかありましたら、補足してください。
この回答への補足
これで、商品名の部分検索とかはできるのでしょうか?
商品名のはじめの5文字で検索とか含まれるものとか
ということです。
というのも商品コードがあるとなんとかなるのですが、
注文と在庫の一覧には商品コードがないんです。
(ちなみに当方、古書店です。書籍コードがない場合、
お客様が知らない場合があります。)
おそらく答えるのに、えらい長い行数がいると
思いますので、できる可能性があるかどうか教えて
いただければ、いいです。
できそうなら、自分でがんばってみたいです。
お手数かけまして申し訳ないです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelでASCを使って全角を半角...
-
作成した数式を値として表示し...
-
Excel関数について教えてくださ...
-
Excel関数について教えてくださ...
-
条件付き書式設定で罫線を引き...
-
エクセルのセル内に分数などの...
-
エクセルの質問です。 F列からL...
-
Microsoft 365Excelの見開きペ...
-
ワークシートに出現したこの画...
-
エクセルの文字が途中から消える
-
Excelの警告について
-
タイムスタンプとテキストから...
-
シートの情報を別のシートへま...
-
マクロの処理が遅くなった
-
エクセルの数式バーのフォント...
-
Excelでの文字色
-
エクセルデーターから必要な項...
-
Excelの数字の前に入っている空...
-
excel2003 マクロボタンが押せない
-
エクセルでファイルの最終更新...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの警告について
-
Excelで数値を時間数に変換する...
-
エクセルの数式バーのフォント...
-
エクセルで数字の組み合わせを...
-
エクセルを使用して、円周率を...
-
Excelで特定の文字列が含まれて...
-
Excel 対象のセルに入力が無い...
-
任意の値が存在する行に名前を...
-
エクセルでファイルの最終更新...
-
index関数の説明をお願いします。
-
条件付き書式でやりたいのですが
-
重複しない値を取り出したい
-
【ExcelVBA】UTF-8(BOM無)でC...
-
【マクロ】マクロが割当てされ...
-
エクセル IF計算式?でしょうか?
-
エクセルで曜日を入れたい
-
表中の指定した条件の文字列を...
-
【Excel】版が同じ事を示す番号...
-
EXCELの散布図で日付が1900年に...
-
Excelについて。Excelに縦1列に...
おすすめ情報