• 締切済み

エクセルで 複数のデータを検索して複数表示させたいのですが・・・。

id-sakuraの回答

回答No.6

Sub 商品検索() Dim Shouhin As String <----------------------------------Inputboxに入れる値を決める Dim zaikoSheet As Worksheet<-----------------------------------それぞれのWorksheetをzaikosheetと決めた      Dim kashiraMoji As String<-------------------------------------在庫リストの頭文字の値を決める Dim i As Integer<-------------------------------------------1,2,3,と変化する値 Shouhin = Application.InputBox(prompt:="商品名を入力して下さい。", Title:="在庫検索") <------------putboxに入れた値をとりだす For Each zaikoSheet In Worksheets<-----------------------------すべてのシートに以下処理をする If zaikoSheet.Name = "検索シート" Then   Exit For <----------------------------------------------------もしシート名が"検索シート"になったら処理を止める Else  <------------------------------------------------それ以外は i = 1 <--------------------------------------------------まず変化する値を1と決める Do Until zaikoSheet.Cells(i + 2, "b").Value = ""<-------------シートのB列3行目以降のセルが空になるまで以下の処理を繰り返す kashiraMoji = Left(zaikoSheet.Cells(i + 2, "b").Value, 1)<----KashiraMojiと言うのはB列3行目以降の左から1番目の文字だよと決めた If kashiraMoji = Shouhin Then<-------------------------------頭文字と商品が同じだったらその時は Worksheets("検索シート").Activate<----------------------------最後のシートをアクティブにして Range("B2").End(xlDown).Offset(1).Value = zaikoSheet.Cells(i + 2, "b").Value <---B列の表の一番最終行にヒットしたセルの値を入れる Range("c2").End(xlDown).Offset(1).Value = zaikoSheet.Cells(i + 2, "c").Value<---C列の表の一番最終行にヒットしたセルの値を入れる Range("d2").End(xlDown).Offset(1).Value = zaikoSheet.Cells(i + 2, "d").Value<---D列の表の一番最終行にヒットしたセルの値を入れる Else <--------------------------------------------------------それ以外(頭文字と商品が違う場合)は何もしない End If <------------------------------------------------------値がなくなったら終わりにして下さい i = i + 1 <--------------------------------------------------- 1を2にして Loop  <-----------------------------------------------------繰り返す(Do untillの行へ戻る) End If <-------------------------------------------------------シート名が検索シートなら終わる Next <--------------------------------------------------------シート名が検索シートでなければ次ぎのシートに進む End Sub 私はマクロの初心者ですが質問のようなマクロだと簡単な記述で出来そうだったので作ってみました。もしかしたら何かの参考になるかと思い勉強も兼ねて作ってみました。 <------------------------以下は補足です。 上記のマクロだとシートが何枚あっても商品がいくつあっても頭文字を入れれば目的の物だけを表示します "検索シート"は最後のシートにしてください(もちろん他の名前でも良いです) とりあえず"検索シート"のB列の最終行を探してヒットした項目を書き出すようにしました      B列   C列   D列 2行目   商品 色 場所 <------見だし行 3行目   *** *** ***<--------------------- ここ表の2行めに何か入れていないと最終行を探し出して書き出してくれない           

関連するQ&A

  • エクセル関数:複数行の値での判断がしたいです。

    エクセル2007で作業をしていて質問があります。 指示列(以下A),商品番号(以下B),カラー(以下C)、在庫数(以下D)という4列があります。 行数は千弱あります。1行はある商品に対するあるカラーの在庫数を示します。 例) A   B   C   D    ----------------------------- 更新 777 赤   3 更新 777 青   2 更新 777 黄   1 更新 888 赤   4 更新 888 青   1 更新 999 青   1 更新 999 黄   0 基本すべての商品に対して「更新」という値をAに入れたいと思っています。 ただ、以下のようにすべての色の在庫が0の場合は販売ができないので 更新対象にならないようにA列にはたとえば「無視」などと入れたいと思います。 例) A   B   C   D    ----------------------------- 無視 111 赤   0 無視 111 青   0 無視 111 黄   0 今までの他の作業は一行の中でVLOOKUPやIFなどを使って判断をしてきましたが 上記の判断をするためにはB列の値が同じ行をひとつの集団としてとらえ、 それらの行のD列の合計が0の場合、という複数行にまたがる判断が必要です。 これをうまく関数を使って判断できないでしょうか。 レコード数が多すぎるので手作業は厳しいと感じています。 今夜中に終わらせたいので迅速なご回答が頂ければ幸いです。 宜しくお願い致します。

  • エクセル 関数を使わずにデータを取りたい

    EXCELを使ってデータ入力をしたいです。 下の図のように、シート1のA列にコードを入力すると、シート2のテーブルから値を引っ張ってくるようにしたい。 たとえば、シート1のA1に"C001"を入力したら、B1に"赤"が自動入力されるようにしたい。 シート1 A列 B列 行1 C001 シート2 A列 B列 行1 C001 赤 行2 C002 青 行3 C003 黄色 ただし、シート1のB列の値は、入力後に編集するため、ここには計算式を入れたくないのです。 なので、通常ならばB列にVLOOKUP関数を使えばすむことですが、計算式を入れずに上記を実現する方法を教えてください。

  • エクセルで別シートから一つのシートに低い数字を表示

    エクセルで同一形式の8枚の別シートから1枚のシートへ一番価格が低いものを表示させたいんです。さらに表示させたシートの色に表示させる様にしたいです。 例  シート1 シート色赤 A 100 B 200 C 300 シート2 シート色青 A 200 B 100 C 300 シート3 シート色黄 A 300 B 200 C 100 合計シート A 100 赤 B 100 青 C 100 黄 数字だけでも表示できると助かるのですが やはり色もつけるとなるとマクロを組まないといけないのでしょうか?

  • エクセルで複数セル同士を検索したいです。

    エクセルで下記の検索がしたいです。 シート1    A    B    C    D  1 あいう  001  2009   × 2 かきく  002  2009   × 3 さしす  001  2009   ○ 4 たちつ  003  2009   × シート2    A    B    C    D  1 あああ  001  2009   × 2 かきく  002  2009   × 3 なにぬ  004  2008   ○ このとき、シート1のAとシート2のAのデータが重複しているものがあるかを調べたいです。 これは、VBAでしかできないでしょうか? 上記の場合は、シート2のA2が重複していると教えてほしいんです。 どうしたら良いと思いますか?説明が分かりにくいかと思いますが、よろしくお願いします。

  • エクセルVBA 集計

    事情がありピボットテーブルを使用しないで実現したいです シート1のドロップダウンリストで集計したい項目を2つ選択(15項目中) 例えば、項目1が色、項目2が形と選択 シート2に500件程(数が増える)のデータがあり、シート3へ集計 (シート3)  A | B | C | D |・・・・・・ 1|色|数|形|数|・・・・・・ 2|赤|30|○|10| 3|青|20|△|20| 4|白|40|□|30| 5|黄|40| ・ ・ シート1で設定した項目1でシート3の1行目を参照し、合致したデータをシート4のA列、B列に貼り付け シート1で設定した項目2でシート3の1行目を参照し、合致したデータをシート4の1行目、2行目に貼り付け 数値は例えばC3なら赤で○のものを表示 (シート4)  A | B | C | D |・・・・・・ 1| |   形  |・・・・・ 2| | |○|△|□| 3| |赤|20|10|16| 4|色|青|10|15|23| 5| |白|14|15|35| 6| |黄|17|15|35| ・ ・ このような感じでシート4を作るVBAをご伝授ください。 シート1、シート2、シート3は出来ているので大丈夫です。 稚拙な説明ですいません。 よろしくお願いいたします。

  • エクセルVBA リストから人数分の表を作成したい

    シート1 A1は名前 B1は地名 リストを作成します。 シート1 A1  B1 鈴木 神奈川 田中 東京 斉藤 静岡 高橋 千葉 マクロでシート2に表を作成したいです。 シート2 C1はゼッケン色です。上から赤、黄、青…と決まっています。 A1  B1  C1 鈴木 神奈川 赤 田中 東京  黄 斉藤 静岡  青 高橋 千葉  白 何故マクロを使用したいかといいますと、4名分、5名分、6名分のリストがあります。 なので、それに合わせた人数分の表を作成したいと思った次第です。 5名分の場合 A1  B1  C1 鈴木 神奈川 赤 田中 東京  黄 斉藤 静岡  青 高橋 千葉  白 中村 神奈川 紫 知恵をお借りください。 宜しくお願いします。

  • Excel VBA データを抽出して各シートにコピー

    色々調べましたが、同じものがなく苦戦しています。 A  B  C  D  色  成績 1           赤  優    1  1     黄  可    1        白  優          1  青  可 1        1  緑  可 上記データをシート“A”、“B”、“C”、“D”に振り分けたいです。 1が立てばそのシートに“色”より右側が転記されるようにしたいです。 ちなみに、1が重複で立っているものは、それぞれに転記です。 ■シート“A”は… 色  成績 赤  優 緑  可 ■シート“B”は… 色  成績 黄  可 白  優 ■シート“C”は… 色  成 黄  可 ■シート“D”は… 色  成 青  可 緑  可 となるようにです。 2日程、これだけに苦しんでいます。 ご教授いただければ幸いです。

  • エクセルの検索関数。

    こんにちわ。 sheet1に、 A B C 1 M 赤 10M 2 M 青 15M 3 M 黄 13M 4 C 赤 15M 5 C 青 18M 6 C 黄 13M        ・        ・        ・ と言うデータが入っているとします。 sheet2には A B C D 1 M 黄 20 2 C 青 30 3 M 赤 25 4 C 赤 28 5 C 青 21 6 C 黄 15       ・       ・       ・ と言う表が入っていて Cの列にそれぞれの値、 たとえばMの黄は「13M」、Cの赤は「15M」と言うように抽出し Dの列の値を掛けたものの値を表示したいのです。 どうしても関数を上手くつなげる事が出来ませんし、 VLOOKUPを使おうとしても上手く抽出が出来ません。 どなたか教えてください。 よろしくお願いいたします。

  • accessで差分のあるデータを表示したい

    最新のaccessです。 二つのテーブルA,Bがあります。  テーブルA ID  色 1   青 2   青 3   黄 4   青 5   青  テーブルB ID  色 1   青 2   黄 3   青 4   黄 5   青 この二つで変化したIDと変化前と変化後をデーターシートで表したいです。 具体的には  クエリ1 ID  テーブルAの色 テーブルBの色 2     青          黄 3     黄          青 4     青          黄 です。 どうすればいいでしょうか? お願い致します。

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