• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCEL VBA VLOOKUPの様な検索したい)

Excel VBA VLOOKUPの様な検索方法

このQ&Aのポイント
  • 販売金額シートの全データを読み込み、商品名と年月をキーに平均単価を検索し、見つかれば表に表示します。
  • 商品数は可変ですが、平均単価が見つからない場合は該当商品に0円またはブランク表示します。
  • Windows XP SP3とExcel2003の環境で動作します。

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

こんな感じかな? 年月は「販売金額」「平均単価」両シートで同じという前提です。 Sub Sample()   With Sheets("販売金額")     nMaxRow = .Cells(Rows.Count, 1).End(xlUp).Row     For i = nMaxRow To 2 Step -1       sName = .Cells(i, 1)              .Rows(i + 1).Insert       .Cells(i + 1, 2) = "平均単価"              nChk = WorksheetFunction.CountIf(Sheets("平均単価").Range("A:A"), sName)       If nChk > 0 Then         nUnitPriceRow = WorksheetFunction.Match(sName, Sheets("平均単価").Range("A:A"))         Sheets("平均単価").Rows(nUnitPriceRow).Copy         .Rows(i + 1).PasteSpecial Paste:=xlPasteValues         .Cells(i + 1, 1).ClearContents       End If     Next i   End With End Sub

yakkun2338
質問者

お礼

mt2008さん、早速のご連絡ありがとうざいました! いつありがとうございます!! ご教授いただきました方法で実現できました!! 助かりました。 今回もまた勉強させていただきました。 ご回答に貴重なお時間を割いていただきまして誠に恐縮です。 この度は本当にありがとうございました。m(_ _)m

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! 今回はA列の結合はなし!というコトで良い訳ですね? 今回も「販売金額」Sheetにコマンドボタンを配置したいみたいなので・・・ 一例です。 Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面に 一旦↓のコードをコピー&ペーストしておいてください。 Sub 平均挿入() Dim i As Long, j As Long, k As Long, c As Range, wS1 As Worksheet, wS2 As Worksheet Set wS1 = Worksheets("販売金額") Set wS2 = Worksheets("平均単価") Application.ScreenUpdating = False j = wS2.Cells(1, Columns.Count).End(xlToLeft).Column For i = wS1.Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1 Set c = wS2.Range("A:A").Find(what:=wS1.Cells(i, "A"), LookIn:=xlValues, lookat:=xlWhole) If Not c Is Nothing Then k = c.Row wS1.Rows(i + 1).Insert Range(wS2.Cells(k, "B"), wS2.Cells(k, j)).Copy wS1.Cells(i + 1, "B") End If Next i Application.ScreenUpdating = True MsgBox "処理完了" End Sub この準備ができた上で、コマンドボタンのコードを Private Sub CommandButton1_Click() Call 平均挿入 End Sub と3行だけにします。 ※ 当然のコトながら一度だけの操作です。繰り返し操作してしまうとめちゃくちゃな表示になります。 すなわちわざわざコマンドボタンで行うより、 単にマクロを一度実行した方が間違いないような気がするのですが・・・ ご希望通りになりますかね?m(_ _)m

yakkun2338
質問者

お礼

tom04さん、早速のご連絡ありがとうざいました! 何度もご連絡いただきまして誠にありがとうございます!! ご教授いただきました方法で実現できました。 毎回ご丁寧な分かり易いご説明を添えていただきまして本当に恐縮です。 素人の私がひょんな事から業務でVBAでの業務効率化を依頼されてしまい、テンパっておいる次第であります・・・ 早く学習して色々と覚えたいのですが、とりあえず今は言われた課題をクリアすることが第一となってしまっている状況です。 また今後も同じような質問を繰り返すことになってしまうと思うのですが、今後すこしづつでも学習して理解を深めていきたいと思います。 この度は本当にありがとうございました。m(_ _)m

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • EXCEL VBA VLOOKUPの様な検索したい

    お世話になります。 VBAを使ってVlookupのような動きをする検索を実施したいのです。 添付図のようにsheet1に基本データが入っています。 [検索]ボタンをクリックしたらsheet1の商品番号をキーにして、sheets2を参照してsheet1の区分にA-Dの値を挿入したいと思います。 sheet1、sheet2ともにデータ量が可変です。 どなたかご教授いただけますでしょうか? お忙しいところ恐縮ですがよろしくお願い致します。 環境 WinsowsXP SP3

  • EXCEL VBA 条件による行の自動挿入

    お世話になります。 EXCEL VBAを使用して自動で行の挿入処理を実施したいと思っております。 やりたい事は添付図の表1を処理ボタンを押せば自動で表2のようにしたいのです。 表2の黄色部分が自動挿入させたい部分です。 例えば「表2作成」というボタンを押したら・・ [sheet1]にある表1をC1からC??の最終行までREADしてC??の文字列が [定価番販売実績]であれば・・ (1)[定価販売実績]の上の行に[定価販売予定]という行を挿入 (2)[定価販売実績]の下の行に[定価差異]という行を挿入 [得売販売実績]であれば・・ (3)[特売販売実績]の上の行に[特売販売予定]という行を挿入 (4)[特売販売実績]の下の行に[特売差異]という行を挿入 という作業を全商品に対して実施したいのです。 図では3商品ですが実際には変動ですが100~200品位です。 出来上がった新しい表2は別シートに表示できれば最高です! どなたか方法をご教授いただけませんでしょうか? よろしくお願い致します。 環境 Windows XP SP3 EXCEL2003

  • エクセル vbaでの相談です

    エクセルでの質問です。 販売管理表を作りたいと思います。 sheet1を商品マスター表とし、下記の見出しがあって A1 JANコード(上一桁4からの番号で13桁) B1 商品コード (14桁) C1 商品名 D1 価格 以下A2行以降、A1行の見出しを元に商品詳細があるとします。 sheet2の下記のA1行を見出しとし、A2行から販売実績をユーザーフォームを使って入力していきたいと思います。 A1 JANコード B1 商品コード C1 商品名 D1 価格 E1 販売番号 フォームを作成し、入力窓に JAN、商品コードのいずれかを入力すると、他の入力窓にsheet1の商品マスター表から該当する商品名、価格を自動入力し登録ボタンを押すと、sheet2の該当セルに反映されるということはできますでしょうか? そして異なる商品のまとめ買いの件数も知りたいので、フォーム上で複数アイテム登録できるようにし、販売番号で件数を管理したいのですが、そちらも可能でしょうか? 販売番号も自動で通し番号が入るようにしたいです。わかりにくい文章で申し訳ありません。ご教授の程、よろしくお願い致します。

  • ExcelのVBAにて

    ExcelのVBAにて お世話になります。 今、請求書を作っています。 sheet1に請求書があり、sheet2に一覧があります。 sheet1の宛先欄に客先名を書いたら、該当する行を抜き出して請求書の欄に書き出すプログラムをお教えください。 <sheet1> 佐藤 様 ご請求額:3900円 商品名   数量  単価   金額 りんご   3   500  1500 バナナ   4   600  2400 <sheet2> 請求先  商品名  数量  単価  金額 佐藤   りんご   3  500 1500 田中   りんご   2  500 1000 田中   ばなな   1  600  600 佐藤   ばなな   4  600 2400 と、いう感じのExcelファイルです。

  • エクセルのVLOOKUPで困っております

     エクセルを使用して表1のような原価計算表を作っております。 単位と単価については別シート(表2)から引っ張ろうとしております。  表1の材料名をキーに表2から単位、単価を引っ張ってこようと表1の 単位、単価にVLOOKUPを使用してみたのですが正しい値を引っ張って こず表1のように「牛乳」を表2の「たまねぎ」から「卵」を「紅茶」 からそれぞれ別の行の値を引っ張ってきてしまいます。ちなみに式は表 1のC2でしたら=IF(A2="","",VLOOKUP(A2,表2!A:C,2,1))、D2でしたら =IF(A2="","",VLOOKUP(A2,表2!A:C,3,1))、といれております。  おそらく単純なミスかと思いますが、自分では見当がつきません。ど こがおかしいのか教えていただきたくお願いいたします。 表1   A     B     C     D     E 1 材料名  量   単位  単価   金額 2 牛乳   0.7    1個   50    35 3 卵     20    1杯   20    400 表2   A       B   C 1 いか     1杯  120 2 牛乳     1L  180 3 卵      1個  20 4 たまねぎ  1個  50 5 紅茶     1杯  20

  • エクセルVBA ユーザーフォーム 検索

    現在VBAにてユーザーフォームにて入力したデータをシート1に転記するものを作成しました。 この転記したデータを生かして作業したいと考えております。 データは商品データで A    B C E F 商品コード 商品名  区分  単価  備考 となっており ユーザーフォームも TEXTBOX1=A TEXTBOX2=B と言う様になってます。 現在考えているのがこのデータの一部を変更したい場合、コマンドボタンを押すと商品コード入力用boxがでてきて、商品コードを入力するとA列から検索し該当する商品データをユーザーフォーム上に表示するようにしたいのです。 そのデータがA75行にあったとします。 そのユーザーフォーム上で単価を変更した場合検索した行(A75行)にそのまま上書きする様にしたいです。 説明がうまくできてないかも知れませんが、どなたかご教授願います。

  • Excel VBAで、検索後行の挿入をしたい。

    A B C  1月 金額 2月 金額 3月 金額 1 5 100 15 300 ・・ 2 3 60 15 300 ・・ という表があります。 この表(シート1)を、別のシート(シート2)にコピーして、 「金額」行の隣に1行追加したいのです。。。 Sub 貼付け() Sheets("シート1").Select Cells.Select   Selection.Copy   Sheets("シート2").Select   ActiveSheet.Paste End Sub Sub 検索後挿入()   Dim objRange As Range  Set objRange = Columns("2:2").Find("金額") として、金額を探すまではできました。 金額セルの隣を選択し、3行追加するにはどうしたらいいでしょうか・・。どうぞ宜しくお願いします!

  • Excelでの複数シート間での検索

    2つのシートがあり、 シート1 商品コード 商品名  単価 100    A    50 200    B    70 300    C    80 シート2 商品コード 倉庫  在庫数 100   東京   10 200   東京    5 300   東京    2 200   大阪  100 300   大阪   70 となっています。 目的は、シート2の商品コードをキーとし、シート1の商品コードを検索し、単価を引っぱってきたいのです。 シート1に該当する商品コードがなかった場合は単価は0としたいです。 どのようにしたらよいか、アドバイスいただきたいのですが、よろしくお願いいたします。

  • EXCEL VBA 絶対参照VLOOKUP検索

    お世話になります。 つい先ほども同じような質問させていただきましたが、VBAを使ってVlookupのような動きをする検索を実施したいのです。ただし、今回は商品マスターを絶対参照したいのです。 相対参照での処理は前回質問で回答者様からご教授いただきました方法で実現できました。 添付図のようにsheet1に基本データが入っています。 [検索]ボタンをクリックしたらsheet1の商品番号をキーにして、sheets2を参照してsheet1の区分にA-Dの値を挿入したいと思います。 sheet1、sheet2ともにデータ量が可変です。 sheet2の商品マスターを参照する際には絶対参照にしたいです。 どなたかご教授いただけますでしょうか? お忙しいところ何度も恐縮ですがよろしくお願い致します。 環境 WinsowsXP SP3

  • vlookupにつきまして

    こんにちは、教えてください。 以下のような表をつくっています。     A     B      C      D       E 1 商品コード 商品名  100枚   1000枚 10000枚 2  1      赤      10       9       8 3  2      青      11       10        7 4  3      黄       12       11        6 赤という商品を100枚発注すると単価は10円ですが、1000枚発注すると9円になるという表です。 現状はvlookup関数を使用して「1」という商品コードを入力すると「赤」と表示 させ、その後に「1」と「1000枚」という情報を入力 すると 「9円」という単価まで自動表示させてしまう表を作成 したいと思っています。 もし縦横読む関数がありましたら教えてください。 =IF(A29="","",VLOOKUP(A29,sheet1!$D$5:$E$154,2,FALSE)) 現状はこの関数を使用しています。この関数だと単価は手入力と なってしまい作業効率が悪く、金額齟齬のおそれがありますので是非 宜しくお願いします。

専門家に質問してみよう