- ベストアンサー
Excel のマクロでの在庫検索
- みんなの回答 (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
その他の回答 (3)
- ARC
- ベストアンサー率46% (643/1383)
可能か不可能かってことでしたら、可能です。 部分一致を判定するためには、 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に、その商品の価格を出力)
- taneyan
- ベストアンサー率33% (73/215)
VBAがお解りになるなら、そんなに難しくはありません。定期的に行う必要があるようでしたら、VBAでプログラム化したほうがべんりですよね。 私は、同じようなことをVBAでやっています。 在庫表と注文表は別のブックにして、同時に両ブックを開き、照合もしています。 VBAなら、コマンドボタンにプログラムを貼り付けてやれば簡単です。
- ARC
- ベストアンサー率46% (643/1383)
マクロを使わなくても、関数だけで可能みたいですね。 ・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
- エクセルでの在庫管理について教えて下さい!
エクセルを使って在庫管理しているのですが、一番最新の在庫量(箱数、端数、総数)を示す、 最終行の内容だけを、別のsheetに作成した一覧リストで参照することって可能なのでしょうか。 もし、分かる方がおられたら、ご教授お願い致します。
- ベストアンサー
- オフィス系ソフト
- Excelでの在庫管理
鋼材を扱う倉庫で、鋼材の入出荷の在庫帳をExcelで管理しています。 ひとつのファイルにサイズごとのシートを作り在庫数の管理をしています。(ファイルは一月毎にしています) シート枚数が多いため目的のシートの選択や翌月への繰越作業などが大変です。(似たサイズがある為間違えることも多いです) シート選択を間違えずに簡単に出来る方法があればどなたか教えてください。 また、出来れば一枚のシートにて全てのサイズを管理したいのですが その方法もあれば教えてください 各サイズごとに在庫数等の合計と入出荷をリスト状にして検索・入力が出来るようなものを作りたいと考えています。 よろしくお願いします
- ベストアンサー
- オフィス系ソフト
- excelで在庫管理
仕事で在庫管理表を作ることになってしまいました・・・。 シート1 商品コード、アイテム名、昨日在庫数 を羅列したリストを貼り付けてシート2の在庫管理表に反映させてその日の在庫数をチェックします。 シート2 商品コード、型番、アイテム名、在庫数 を表示しています。 毎日上書きして在庫管理するリストなので、シート1の変動もあり、なかなか使えるものができません。 簡単にシート1の在庫をシート2に反映させられる関数はありませんか? excel初心者で何もわからないので教えて下さいm(_ _)m
- ベストアンサー
- オフィス系ソフト
- エクセル あいまい検索
sheet1 sheet2 A列 A列 400 '400-a 13394 '13394-d 1286 '1286-a ○sheet2の列の中から”400”を含むものを検索したいです。 vlookupでsheet2のB1= vlookup("*"&sheet1!a1&"*",a1:a10,1,0) とあいまい検索できるか試してみたのですが上手くいきません。 期中で在庫システムを変更して変更後のデータがsheet2なのですがなぜかアポストロフィのようなものと-がついてしまい、なんとか新旧の在庫の製品コードが一致していることを確認したいのです。 よろしくお願い致します。
- ベストアンサー
- その他MS Office製品
- 在庫表の管理をエクセルで行うに当たって、教えてください。
エクセルのシート2に在庫表があります。 在庫表には、仕入日、仕入先、整理番号、メーカー、商品分類、モデル名、車体番号、仕入金額、が 右並びに書いてあります。 整理番号は、データを入れる時に、4桁の数値で各車に、つけます。(整理番号で管理している) メーカー数は、10件のメーカー数があります。 商品分類はA-1,A-2,B-1,B-2,C-1.,C-2,C-3の7項目があります。 シート1を新規に仕入れた商品のデータインプット用とし、これに、インプットすると、 シート2の在庫表が、メーカー別、商品分類別になっているため、(別の言い方:メーカー:10×分類:7で70の在庫グループがある) その(在庫グループ)の最終行に、自動的に転記されるようにしたいのです。(別の言い方:整理番号が昇順) 同様に、売上た商品も、シート1で、売上日、売上先、整理番号、メーカー、商品分類、モデル名、車体番号、売上金額、をインプットすると、自動的に在庫表から削除されて、その行が詰まるようにしたいのです。 よろしくお願いします。
- 締切済み
- Windows系OS
- エクセル、VBA、抽出複数検索について
エクセル、VBA、VLOOKUP、MATCH関数等について出来る方法があれば教えてください。 インチごとに分けてあるシートがあり、(在庫表です) これを参照して、別ブックへVLOOKUP等を使って、サンプルデータのシート4のように表示させたいのですが、 何か方法を使って出来ることは可能でしょうか? 問題点が複数あります 1、VLOOKUPの範囲について、B列が結合されていて、C列は複数行あるため、商品名が入ってきません。 C列については、何千件とデータがあるため、結合することは不可能です。 一致している条件としては商品コードが必ずあり、商品名には「/」が入っております。 =CONCATENATEとVLOOKUPは一緒に使うことは可能ですか? もしくはINDEX関数やIF、SUMPRODUCT等を使うのでしょうか? シート4のような形に出来る方法があれば、教えてほしいです。 VBAは詳しくはないのですが、VBAで出来るのであれば、教えてほしいです。 在庫表はとても作り方が悪いのですが、これを作り直すと言うことは、不可能です。 グループ会社で使っているため、なんとかこの在庫表を使いたいです。 VBAでA列をA5からA100にコードのみ入れた場合、B列に商品名が入るようにVBAで作ることは可能でしょうか? もしくは、検索条件を2つ使って、一つは商品コード完全一致+あいまい検索で【/】で商品名を入れることは可能でしょうか? 関数は調べたのですが、関数では難しいのかなと思います。 宜しくお願い致します。
- ベストアンサー
- Excel(エクセル)
- エクセルのマクロについて教えて下さい。
添付した画像の様な注文管理シートがあります。 バーコードリーダーを使ってバーコードのJANを読み取り、該当する商品を検索したいです。 商品コードは 自社コード/JAN の形式になっています。 入荷した商品のバーコードを読み取ると、該当する商品のD列に読み取った日付を自動的に入力したいです。 その際に、既に入荷している商品はスキップして、未入荷の商品を検索する方法を教えて下さい。 例えば、 JAN 49000001 のバーコードを読み取った場合、D10に本日の日付を入力したいです。 また、バーコードを読むと、該当するセルにカーソルが移動する方法も合わせて教えて頂きたいです。 こちらも既に入荷している商品はスキップして、未入荷の商品を検索したいです。 例えば、 JAN 49000002 のバーコードを読み取った場合、A12にカーソルが移動する様にしたいです。 関数やマクロ等を使用して、これらを行う方法を教えて頂きたいです。 よろしくお願いします。 動作環境 windows 7 PRO エクセル2010 バーコードリーダー BC-BR900L 補足 出力用のデータの入力先はセルにしたいと思います。 特にセルでなくてはならない理由は今の所ありませんが、空いた列を使用したいです。 この例だとE列でお願いします。 カーソルの移動の理由ですが、作業の工程が違うので、カーソル移動が必要です。 日付を入れる方は、商品の荷受け作業の際に使用します。 バーコードを読んで、どの注文分の商品が該当するかを付け合わせる際に使用したいです。 カーソルの移動は、発送作業の際に使用します。 バーコードを読んで、どの発送分かを確認する際に使用したいです。 実際のシートには、顧客情報や注文番号などのセルが存在しています。 それらの情報を確認する際に使用したいです。 わかりにくい説明で申し訳ありませんが、どうかよろしくお願いします。
- ベストアンサー
- Excel(エクセル)
- ネット注文 在庫切れで発送はしばらくかかるらしいです。どのくらいかかるのでしょうか?
本来なら7~10日ぐらいかかるそうなんですが、今日(注文してから5日目)に別の用事でコールセンターに問い合わせたときに聞いたのですが、注文してる商品は在庫切れで、もうすこし発送が遅くなるかもしれないといわれました。 商品は、通信の教材なんですが、人気なのかどうかはわかりませんが、在庫切れでした。 コールセンターの人も具体的な日はわからないといってましたが、だいたい常識的にどのくらいかかるものなんでしょうか? (場合によっては1ヶ月以上かかるとかっていうこともあるのでしょうか?) そもそも注文するときには在庫切れとか出てたわけではないのになぜこんなことがおきるのかも不思議ですが・・・ (在庫切れなら在庫切れと書いておいてほしかったです。)
- ベストアンサー
- ネット通販
- エクセルマクロで一致データを検索
エクセルのマクロを使用して以下のことを行いたいです。 (※VBA初心者なので解説を書いていただけるとありがたいです。) ・商品マスタのCSVを読み込む。 30万件以上あるので、エクセルでは表示できません。 ・読み込んだ商品マスタに記載されている商品コードを、 商品データ一覧のエクセルファイルに自動で転記したい。 商品データ一覧のエクセルファイルには、「商品番号」「色」「サイズ」があります。 この3条件が商品マスタのものと一致する商品マスタのコードを転記したいです。 量が膨大なうえ、急ぎの作業なため、何卒よろしくお願いいたします。
- 締切済み
- Visual Basic
- 【Excel】在庫管理 VBA 関数
在庫・販売管理用のファイルをExcelにて作成しています。 仕様 ・仕入管理/在庫管理/販売管理の3シート ・商品データは在庫管理シートに記録 ・商品にはそれぞれ商品番号をつけ管理 まだ運用前なのですが、以下のような運用方法を考えています。 それにあたって、自動化したい作業があるのですが、なかなかできず…。 VBAの知識をお持ちの方,お力をかして頂けないでしょうか? もしくは関数で同じような動作が実行可能なら、そちらでも構いません。 <仕入れがあった場合> (1)在庫管理シートに商品を登録(以前に取り扱ったことのある商品の場合は省略) (2)仕入管理シートに商品の仕入数を記録(VLOOKUP関数で在庫管理シートから商品名等を呼び出します) (3)在庫管理シートに(2)で入力した仕入数反映(在庫管理シートにプラス) ← ここを自動化したいです <販売した場合> (1)販売管理シートに販売した商品、価格、個数、販売相手などを記録(同じく在庫管理シートから商品詳細を呼び出します) (2)在庫管理シートに(1)で入力した販売数を反映(在庫管理シートからマイナス) ← ここを自動化したいです この自動化ができれば在庫管理シートがリアルタイムの在庫を表示するようになるので、とても便利なのですが、今現在の状態だと、この「自動化したい部分」を手作業にてやる予定です。 現在は商品の出入がとても少ないので、手作業でも問題ないのですが、今後商品が増えることを考えると実用的ではなく…。 できれば、「入力してすぐ反映」というシステムより、「入力後確認→確定→反映」というシステムにしたいのですが…。(ワガママで申し訳ないです) 私は関数はある程度扱えますが、VBAについては初心者の状態から今勉強中といったところです。 是非皆様のお力を貸して下さい!よろしくお願い致します。
- ベストアンサー
- その他MS Office製品
お礼
非常に丁寧な解答ありがとうございました。 これを見た瞬間、正直いって驚かされました。 ARCさんの回答を利用させていただきます。 あっという間に解決できそうです。 ほんとうにありがとうございます。