• 締切済み

【ExcelマクロVBA】抽出したデータをリストボックスで表示させるマクロ

imogasiの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

これはプチ課題の丸投げですね。 (1)質問の文章は長いが、入力シート(Sheet1と仮定して)に数件入力した時の後の姿が書かれていないので判りにくい。このほうが自然だろうと推定でやった。 (2)リストボックスはコンボでやった。 クリックする前は、大きさが1行で済むのでこの方が良かろうかと思った。(オブジェクトをリストボックスを貼り付けにして、下記コードでCombox1をlistBox1に置き換えると動くと思う。) ーー 全般に簡単そうに見えるが、質問者のレベルでは、荷が重いのでは。 色々な課題が諸所に散らばっていると思うが、相当時間をかけないと (まねすれば早いが)独力では、使えないもののようにおもう。 ーー 例データ Sheet2 A2:C10 りんご A店 100 りんご B店 90 すいか A店 950 すいか C店   800 みかん D店 100 すいか E店 800 バナナ F店 200 すいか G店 750 みかん G店 200 Sheet1 コンボボックスを1つ張り付け。高さは1セル分。幅は2列データが 出せるぐらい。D列あたりに配置。 ーー コード 標準モジュールに Public tg As Range   -- Sheet1のイベント・プロシに Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 Then Set tg = Target Dim sh1 As Worksheet Dim sh2 As Worksheet '-- Set sh1 = Worksheets("Sheet1") Set sh2 = Worksheets("Sheet2") ' -- d = sh2.Range("A65536").End(xlUp).Row ComboBox1.Clear ComboBox1.Top = tg.Offset(0, 2).Top '--- For i = 2 To d If Target = sh2.Cells(i, "A") Then s = sh2.Cells(i, "B") ComboBox1.AddItem s & Space(10 - Len(s)) & sh2.Cells(i, "C") End If Next i End If End Sub および Private Sub ComboBox1_Click() tg.Offset(0, 1) = Left(ComboBox1.Text, 10) tg.Offset(0, 2) = Mid(ComboBox1.Text, 10, 10) ComboBox1.Clear tg.Offset(1, 0).Activate ComboBox1.Top = tg.Offset(0, 3).Top End Sub ーー 操作 Sheet1のA列で 例えば「すいか」と入れて、Enter。 コンボの▼をクリック。Sheet2のすいか該当分がでる。 どれか1つ選択。 入力した行の、B、C列にコンボで選択した行の、店と値段がセットされる。 直下行に行くから、商品名の入力繰り返し。 Sheet1の途中結果 りんご A店 100 バナナ F店 200 すいか E店 800 ーー >しているのでLookupなどの関数では無理ではと思っていますがマクロだと可能でしょうか? まとはずれ。複数該当分は取れない。 ーー キャンセルやDELETEなどをすると、上記では手当てがしてないのでエラーになる。イベント・プロシはそういう限界のあるものです。

関連するQ&A

  • 転記 マクロ VBA

    VBA初心者です。今シートが2つあり、一つは「明細」シート、もう一つは「入力」シートです。明細シートは3万行程あり、列はA~Sまであります。入力シートも全く同じ列並びでA~Sまであります。共にA列が伝票No.という項目になっており、今このA列にどんどん伝票No.を入力していき、最後に転記ボタンを押して残りのB~S列を明細シートから一発転記できるマクロができないかと考えております。どなたか詳しい方教えて頂けないでしょうか。宜しくお願い致します。

  • Excel_VB:条件を入れてデータ抽出

    別シートにあるデータベースを 特定のセルに抽出条件となるwordを入力すると別シートから情報を返すマクロを作成しています。 簡易的なコードがございましたらご教授ください。 何卒よろしくお願いいたします。 詳細 ▼検索条件の単語を入力するセル  1~3を複数条件で抽出   1_バンド名(B6) 2_曲名(B8) 3_アルバム名(B10) ▼別シートのデータベース 1行目はタイトルを入力しています。 バンド名(A列) 曲名(B列) アルバム (C列)    時間(D列) ジャンル(E列) メディア(F列) 備考(G列) ▼情報を返すセル バンド名(F15) 曲名(G15) アルバム (H15)    時間(I列) ジャンル(J15) メディア(K15) 備考(L15)

  • excel vba データリストからの抽出

    excel vbaで、以下のような事をしたいと思っています。 【sheet1】データ   A  B C D E  1 あ い う え お 2 か き く け こ 3 あ き く せ そ 4 さ  し す せ そ 5 あ し す け こ 【sheet2】検索 A1を検索条件セルにする ※検索キーはsheet1のA列に登場するテキストのみです。   A  B  C  D  E 1 あ い う え お 2   き く せ そ 3    し す け こ 4 5 ※A2、A3に"あ"と表示されてしまってもよいのですが、  出来れば表示なしが望ましいです。 sheet2のA1は、sheet3に、sheet1のA列に登場したテキストをデータとしてリストしておき、 「データの入力規則」でリストから選択できるようにしようと考えています。 説明が下手でうまく伝わらないかも知れませんが、うまいやり方があれば どうかご教示下さい。 宜しくお願い致します。

  • 急!!Excel VBA 転記マクロを教えて下さい

    Excel VBA超初心者です、 急ぎ作らなければならない資料があり、ご助力願います。 次の様な転記するアクションをコマンドボタンに設定したいです。 Sheet1の列A(先頭セルA2)に入力したデータを、 追加した(入力間違い等を除き、保存した)データ分だけ Sheet2の列B(先頭セルB3)の最終行から転記させていく。 列Aに入力したデータは、並び替えをするので (この分は、今回のVBAに含みません。入力・転記後、Sheet1で普通に並び替えをします。) 列Aと列Bのデータの順番が異なる。 以上です。 どうぞ宜しくお願いします。

  • excel vba複数行入力可能なテキストボックスを上段から複数列に表示

    よろしくお願いします。 現在ユーザーフォーム上に3つのテキストボックス (複数行ではありません)があり、それぞれに文字を打ち込んで、コマンドボタンでセルに転記させているのですが、もっと効率のよい方法はないのかと思い探したもののなかったため質問いたします。 (複数行のセルにはありましたが、複数列のセルに転記がなかったため) 複数行入力可能なテキストボックスに入力された文字を上段から1行ずつA10からC10と列に転記したいのです。 こんな感じです テキストボックス |------| |AAA       |  |BBB       | |CCC       | |------| 複数行入力し(空欄の時もあります)コマンドボタンをクリックすると シート1の     A      B     C ・ 10 AAA   BBB   CCC

  • エクセル 抽出マクロについて

    はじめまして。マクロ初心者です。 エクセルで抽出結果を別シートにコピーしたいのですが、 抽出条件が2列にわたっています。 A     B      C      D 日付   タイトル   分類(あ)  分類(い) 11/22   テレビ    3      2 12/15   ラジオ    1      4 11/18   雑誌     2      5 …というような感じです。 例えば分類が「2」のものを抽出したい時に、 ●シート1のあるセルに「2」と入力してマクロを実行。  ↓ ●シート2に以下のように結果をコピーして表示。 A       B 日付     タイトル 11/22     テレビ 11/18     雑誌 という具合にしたいのです。(C列、D列は表示しない) データはシート3に入力されていて、今後どんどん増えていく予定です。 エクセルは2007です。 本やホームページを参考に試行錯誤したのですが、うまくいきません…。 どなたかご回答よろしくお願いいたします。  

  • 【Excel VBA】ThisWorkbook モジュールのマクロ

    Excel2003を使用しています。 39枚のシートから成るBook1のThisWorkbook モジュールに、C列に“○月計”と入力されたら、その行のE列、F列、G列へ数式を入力するコードを書いています。 現在は、それぞれのシート(39枚のシートのうち3枚を除く36枚)のC列最終行から2行下のセルへ“○月計”と手入力していますが、マクロで“○月計”と入力されるようにすれば、ThisWorkbook モジュールに書いているコードも実行されて、数式の入力までマクロで処理できるのかな?と思い、試しに、36枚それぞれシートのC列最終行から2行下のセルへ“○月計”と入力されるようコードを書いてみました。 …が、そうではないのか、それぞれのシートのC列最終行から2行下のセルへ“○月計”と入力されるものの、E列、F列、G列へ数式は入力されません。 せっかくなので、できることなら数式の入力までマクロで処理したいのですが、どのようにしたらThisWorkbook モジュールに書いているコードまで実行されるのでしょうか? よろしくお願いします。

  • 【Excel VBA】条件に合うデータの転記

    Excel2003を使用しています。 2つのシート間の特定の範囲内で、条件に合うデータを転記したいのですが… Sheet1(A1:C41) ← 一定範囲 Sheet2(選択範囲) ← 都度、選択範囲取得 Sheet2の選択範囲内で、A列とB列の値が、Sheet1のA列とB列のそれぞれの値と一致した場合、Sheet1のC列の値をSheet2のE列に転記したいのですが、こういう場合、コードはどのように書いたらいいでしょうか? 条件に合ったものを順に転記していくコードは書いたことがあるのですが、特定の範囲内ということや、転記する場所が指定されたりしていて、つまづいています。 よろしくお願いします。

  • excel2003 VBAマクロの作成

    すいません、下記のような条件を満たすマクロのサンプルコードをお願いします。 ■前提条件 ・「検索元データ」はマクロ.xlsの中にある ・「検索先ファイル」は管理ファイル.xlsである ・マクロ.xlsファイルのA列にはデータがn個ある(セル範囲A2:A(n+1)まで) ・C:\one\two\three\管理ファイル.xls のフォルダ位置である(絶対パスで指定する) ・管理ファイルの中にはSheet1,Sheet2,Sheet3・・・・Sheet10の10コのシートがある ■マクロでしたいこと (1)A列のデータが管理ファイル(ブック内)に記載されているかチェックする (2)A列のデータをチェックしたら、下記の通りに列にチェック情報を記載する B列 データがいくつあったか(管理ファイルに記載されていない場合は0と表示) C列 データが記載されているシート名(B列が0の場合は0と表示) (3)次のデータへ (4) (1)-(3)をA列のデータがなくなるまで繰り返す (5)データがなくなったら終了(保存せず閉じない) 以上です。 よろしくお願いします。

  • EXCEL プログラム マクロ VBA シート 転記

    私はプログラム初心者です。 EXCELでマクロを組もうと思いましたが、皆目見当つかないので質問させて頂きました。 以下のようなことがしたいです。 ・Sheet1にある内容を他のシートへ転記する ・他のシートの名前はポン酢、醤油、味噌、酢である。 ・Sheet1には以下のようなデータ群がセルにはりつけられている 行A|行B|行C 管理番号|値段|調味料 1|100円|ポン酢 2|200円|醤油 3|900円|味噌 4|500円|酢 5|800円|味噌 6|(空白)|(空白) 7|2000円|酢 以上のデータをシートへ貼り付ける。 シートの名前はポン酢・醤油・味噌・酢であり、調味料の列に入っている名前から各シートへ転記する。 また、Sheet1に貼り付けられているデータで空欄の部分は飛ばすものとする。 シート転記例(味噌) 3|900円|味噌 5|800円|味噌 シート転記例(酢) 7|2000円|酢 どうぞ、よろしくお願いいたします。