• ベストアンサー

エクセル VLOOKUPで探したレコードを書き換えるには?

エクセルで在庫管理をしようと思います。 商品コード  品名   在庫数 A000001   あんぱん   20 A000002   ジャムパン  15 B000001   カップ麺   10 C000001   ジュース   25 上のような商品リストを作ります。 VLOOKUP関数を使用して商品コードを入力すると品名と在庫を表示します。 このときに、その商品を1個売ったとして、在庫を減らすにはどのようにしたら良いでしょうか? VBAを使って簡単なレジ機能を持った在庫管理システムを作ろうと考えています。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

どこから回答すればよいか迷ってしまいます。 VBAでA列の商品コードを検索して、その行のC列の数値を減算するのは可能です。例えばVBAでApplication.Match関数を用いて行番号を取得し、Cells(行番号,"C")の値を加工する方法もあります。テストはしていませんが、こんなコードになるでしょう。  ItemCD = "A000001"  numSold = 2  '売れた数  res = Application.Match(ItemCD, Worksheets("商品リスト").Range(Range("A1"), Range("A65536").End(xlUp)), 0)  If IsNumeric(res) Then   Cells(res , "C") = Cells(res , "C") - numSold  Else   MsgBox "商品が見つかりません"  End If 他にFindメソッドを使う方法もあるでしょうし、1行ずつ繰り返し処理を行いIf文で判定する方法もあるでしょう。 でも実際にVBAを書こうとするなら ・検索する商品コードはどこから取得する? (フォーム? シートのセル?) ・商品コードが見つからなかったときはどうする? 入れ直しさせるならそのセルやテキストボックスに制御を移さなければならない。 更に業務で使うことを考えるなら ・数量を誤って入力したらどうする(VBAで処理したものはUndoできない) ・後で販売履歴を見るためには、別シートに履歴を書き込んでおくことも考えなければならない ・棚卸し処理はどうする? 等、色々なことを検討しなければなりません。どこまでお考えになっているでしょうか? もう少し前提条件(シートの構成や、どんな入力方法にする等)を煮詰めてから質問を絞ってされる方が、目的実現の近道と思います

AR-C26TY
質問者

お礼

レジとか在庫管理とか余計な事を質問に書き込んだため、色々とご指導いただくことになってしまい、申し訳ございません。 今回の質問の趣旨は技術的部分だけでした。 ただ、全体の構造をはっきりと決めずに走り出してしまったことを反省し、煮詰めの作業をやり直そうと考えたきっかけにもなりました。 ありがとうございます。 今回はこのような書き方で使用させて頂きました。 res = Application.Match(ItemCD, Worksheets("商品リスト").Columns("A"), 0)

関連するQ&A

  • VLOOKUP関数について

    VLOOKUP関数についての疑問なのですが、 ...........A...............B 1..品名コード|.品名..| 2..A123...........|..お茶.| 3..A456...........|...水....| 4..A789...........|..お酒.| というデータがあったとします。 VLOOKUP関数を使用して、 このデータから 品名コードを入力して品名を検索することは できるのですが、品名を入力して品名コードを検索できません。 データのA列とB列の位置を入れ替えれば検索が可能になりますが…。 VLOOKUP関数は検索するキーのデータが一番左側にないと機能しないのでしょうか? どなたかご教授お願いいたします。

  • エクセルVBA VLOOKUPについて

    エクセル VBA初心者です。 関数でのVLOOKUPをVBAで作りたいのですが、上手くいきません。 あらかじめ、Sheet2の1から300行までに A列  / B列 商品名 / 商品コード が入力されています。(名前の定義=商品コード) Sheet1にユーザーフォームを利用して、データを書き込んだ後、 B列に商品名が書き込まれると、 A列に商品コードが表示されるようにしたいと考えています。 A列に =IF(B2="","",VLOOKUP(B2,商品コード,2,FALSE)) と入力していたのですが、 VBAでIfを使って出来ないかと考えてみたのですが、 上手くいきませんでした。 Private Sub Worksheet_Change(ByVal Target As Range) Dim sRow As Long Dim sColumn As Long sRow = ActiveCell.Row sColumn = ActiveCell.Column If Cells(sRow, 2).Value = True Then Cells(sRow, 1).Value = WorksheetFunction.VLookup(Cells(sRow2).Value, Worksheets("Sheet2").Range("A1:B300"), 2, False) ElseIf Cells(sRow, 2).Value = " " Then Cells(sRow, 1).Value = " " End If End Sub ご教授いただけないでしょうか? エクセル2003 WindowsXP

  • エクセル、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つ使って、一つは商品コード完全一致+あいまい検索で【/】で商品名を入れることは可能でしょうか? 関数は調べたのですが、関数では難しいのかなと思います。 宜しくお願い致します。

  • エクセル VLOOKUPが反映されない

    エクセルに詳しい方、教えて下さい。 エクセルで部品の在庫管理をしているのですが、月に1度、外注さんからエクセルのデータで在庫表が送られてくるのですが、データ量が多い為、VLOOKUP関数を使って同じ部品があるかどうか(部品コードで検索しています。)検索をかけているのですが、外注さんのエクセルのセルの書式設定が違うのか、同じ部品コードがあっても「#N/A」になってしまうのですが、なぜでしょうか? また、セルの書式設定を「標準」にしても、「#N/A」←エラーになってしまって、どちらかの表に部品コードを入力し直すと反映されるのですが、データ量が多いので1個1個入力し直すと時間がかかってしまうので困っています。どなたかわかる方がいましたら宜しくお願いします。

  • EXCEL VLOOKUPでの問題

    現在VLOOKUPを使って、商品名から品番を導きだそうとしているのですが どうしてもうまくいきません。 うまく説明できるか分からないのですが、こちらが今取り組んでいることになります。 まず品番をセルのA1からA10まであります。 A1 1000100 A2 1000101 A3 1000102 A4 1000103 .... のようにです。 またセルB1からB10まで商品名があります。 B1 パン B2 ケーキ B3 のり B4 はちみつ ....のようにです。 ここでVLOOKUPの式を =VLOOKUP(A11,A1:B10,1,TRUE)と書いたのですが例え【B1】の【パン】と入力しても#N/Aとなったままです。※(A11に商品名をいれることによってB11に品番が反映されるようになっております。) 品番を例えば【あああ】と文字列にした場合は反映されるのですが、数値にした場合はエラー表示されてしまいます。 #N/Aとなったままになっております。 色々と値を変更したりしているのですが、どうしても【パン】を検索したら【1000100】が出てきません。 どうしてもこれが出来なくては仕事に支障があり、どなた様か解決方法をご存知の方がおりましたらご教授していただけませんでしょうか。 どうか宜しくお願い致します。

  • ExcelのVLOOKUPについて

    B2に商品名を出したいと思っています。 A2の12桁の数値コードを使ってVLOOKUPにてD1~E4の表の商品名を参照することはできますでしょうか? A2に12桁はD2の13桁と違ってわざと一桁少なく入力して参照したいのです。

  • エクセルのVLOOKUP関数について。

    エクセルのVLOOKUP関数について。 教えて頂きたいです。 sheet2に商品マスターがあり、タイトルとしてセルA1に品目コード、B1に品名、C1に会社名、D1に県名、E1に個数と入力してあります。 sheet2のA2には111、B2にはいちご、C2にランド、D2に埼玉県D3に山梨県、E2に100個、E3に200個、E4に300個 と入力してあります。 sheet1のA2に111と入力し、B2にいちご、C2にランド、D2に埼玉県、D3に山梨県、E2に100個、E3に200個、E4に300個と表示させることは可能でしょうか? 県名に対して2個、個数を3種類持っているのです。出来ればVLOOKUP関数でお願いしたいのですが、他の関数でも構いません。 自分で色々検索し、下の行のセルの値を返す等の記事を見たのですが、いまいち理解できずにいます>< 尚、sheet2の商品マスターは作り直せず、手をつけることも出来ません。(私には権限がない為) sheet2の商品マスターのデータは膨大(約1400行)である為。 222(品目コード)、ぶどう(品名)、遊園地(会社名)、東京(県名)、50個(個数)、 333(品目コード)、みかん(品名)、ドーム(会社名)、千葉(県名)、100個(個数)、200個(個数) と、ぶどうは個数が1種類 みかんは個数が2種類 など、ランダムに商品マスターが作成してあります。 説明が下手ですみません><

  • VLOOKUP関数のエラーについて

    ExcelでVLOOKUP関数を使って表を作成しようと思っています。コードを入力することによって、品名を表示させるようにしたいのですが、今までVLOOKUP関数は使ったことがないので、練習用として簡単な表を作成しました。コードはアルファベットA~Eと、数字1~5を使っています。コードが数字の場合は品名が正しく表示され、アルファベットの場合はAだけがエラーとなります。別の表で試したところ、やはりコードがAのものだけがエラーになります。なぜAがエラーになるのか理由がわかりません。 何が原因なのか、どうすれば正しく表示されるのかを教えていただきたく、よろしくお願いいたします。

  • Excel特定文字列に応じた表示 VLOOKUP等

    ExcelでA列を分類分けした名前をB列に入力していきたいと考えています。 A列 cho洗剤tcs ts洗剤 カップjkl jdsaカップ というような文字列があった時、B列にAのセルに対応したワードを入れたい。 「洗剤」というワードを含むなら「洗剤」、 「カップ」を含むなら「カップ麺」 という風にしたいです。条件は複数あり、行数も膨大です。 VLOOKUPを使って何とかならないかと別シートに A     B 洗剤   洗剤 カップ  カップ麺 という表を作りはしたのですが、うまく使えません。 どうか良い方法を教えていただけませんか。

  • VLOOKUPがうまくいかない

    商品コードを打ち込めば、商品名がでるようにしたくて、VLOOKUPを使ってみましたが、うまくいきません。 最初に商品コード(A23)を打ち込んで、商品名を出したいセル(B23)を検索値に入れます。 範囲は、商品コードと商品名を打ち込んだグラフ(A15:B18)を選択しました。 列番号を2とし、検索の型には何も入れないままOKを押すと、 「数式を計算できません。数式のセル参照は計算結果を参照(循環参照)しています」とでます。 ちなみに、範囲を入力した後F4を押して、OKを押してもだめでした。 どこが違うのでしょうか? また、VLOOKUPでなくても出来るのでしょうか? 教えてください、お願いします。

専門家に質問してみよう