• 締切済み

条件にあった(コンボボックスから選択した)列のみを表示したい。

おはようございます。 VBA初心者です。どうぞお力添えをお願いいたします。 office2003を使用しております。 Excelの表にて会社での物品の集計表を作っております。 A列に部署 B列に物品名 C~E列まで発注元・発注先などが記載 Fから右方向へ週一回ずつ発注数(列)が増えていきます。 A1、B1、C1・・・は見出しで、F1には集計した日付が入力されます。 マクロを使用し、各部門毎の注文書からVLOOKUP等で自動的にデータを集計し、F列に挿入していくという形を取っております。過去分はGHIJKと右方向へ移動していきます。 定期的に「過去のある月の注文状況」を確認したいときがあります。 現在は12月ですが、「8月の総務課の注文状況は?」といったときに、列数が多く、非常に煩雑です。 そこで、コンボボックスを設置し、1月~12月まで選択できるようにし、それを選んだ(もしくはボタン操作でも構いません)とき、F列以降のその月の列だけを表示したいと考えております。 どうか宜しくお願いいたします。 A    B     C~E   F     G    H 部署  品目         12/2    11/28    11/21 総務 ボールペン ・・・   0        12        5 総務 修正テープ ・・・   22        0       0 総務 ・ ・ ・ 経理 ノート         10       0      12 経理 えんぴつ        1     12       0 ・ ・ ・

みんなの回答

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

何行分あるのか良くわかりませんが、たくさんあってかつ可変ということなのですよね? G列以降の列(特に列のタイトル)は、人為的に変更されることはないものと仮定してよければ、以下の要領で・・・ (1)シートに直接コンボボックスを作成します。  (オブジェクト名が「ComboBox1」であることを確認してください。)  コンボボックスにはセルのリンクを張らないでおくこと。  (ユーザーフォームだと、複雑で、ここに記載するのが面倒になるので、   直接のボックスにしました。)  (2)対象とするシートのシートモジュールに以下をコピー (3)以上で、ボックスから選択したタイトルの行が、ウインドウの最左列に  表示されるようになります。 表示位置の調節や、その他は適宜アレンジしてください。 Private Sub ComboBox1_Change() Dim col As Integer  col = ComboBox1.ListIndex + 6  If col < 6 Then Exit Sub  ActiveWindow.SmallScroll toright:=col - ActiveWindow.VisibleRange.Column End Sub Private Sub ComboBox1_DropButtonClick() Dim dt() As String Dim i As Integer, col As Integer  col = Cells(1, Columns.Count).End(xlToLeft).Column  If col - 5 = ComboBox1.ListCount Then Exit Sub  If col > 4 Then ReDim dt(0 To col - 6)  For i = 6 To col   dt(i - 6) = Cells(1, i).Text  Next i  ComboBox1.ColumnCount = 1  ComboBox1.List() = dt  ComboBox1.Style = fmStyleDropDownList End Sub

kyo1308
質問者

お礼

回答ありがとうございます。 とりあえずコピーしてやってみました。 確かに希望の列が一番左に来ますが・・・。 すいません、私の質問が悪かったと思います。 まず、物品の名称等は隠さず(スクロールもせず)表示した状態であること、 希望の列(希望の月)のみを表示させ、それ以外は非表示にすること、 が希望でした。 今回の件は自分で何とか出来ました。 日付から月だけ取得して、それとコンボボックスの値を照らし合わせ、一列ずつループを使用して表示・非表示を選択する形を取りました。 ご検討いただきました皆様どうもありがとうございました。 fujillin様 非常に貴重なアドバイス・コードありがとうございました。 これからも参考にさせていただきます。

関連するQ&A

  • エクセルで列を複数行にしたいのですが

    注文表を商品ごとに集計したいのですが、商品名・数が列の入っています。これを縦にして集計しようと思っているのですが、列を行する方法を教えてください。 エクセルの表で列A・Bを共通にして列C・Dを次の行に、そして列E・Fを次の行にとしたいのですが、教えてください。 列A 列B   列C  列D 列E 列F 001 ○○会社 商品A 10  商品F 14 001 ○○会社 商品C 11  商品A 20 005 ××会社 商品D 32  商品C 25 これを 列A 列B   列C  列D 列E 列F 001 ○○会社 商品A 10  001 ○○会社 商品F 14  001 ○○会社 商品C 11  001 ○○会社 商品A 20  005 ××会社 商品D 32  005 ××会社 商品C 25 よろしくお願いいたします。

  • コンボボックスに、組み込むマクロ

    こんにちは。 一人ではどうしたらよいか、わからないので、お判りの方がいらっしゃいましたら、お願い致します。 コンボボックスで、選択したIDで、別シートからの数値が表示されるシートがあります。 総計は、今のままでも出るのですが、あるカテゴリー: 例えば(会社ID)<H1,H2,H3>を小計1、<H1,H2,H3,H4>を小計2として表示させたいのです。 関数でも、マクロでも構いませんので、方法があれば教えてください。 Sheet1(集計表) A1:コンボボックス(会社名)選択  B1:会社ID(=VLOOKUP(A1,CD表!A:D,4,FALSE)             C2:科目(10) A3:項目名 B3:項目ID C3:件数 D3:金額 (人件費)   (455)  (12) (500000) ★SUMIF関数で、各数値をdataシートから持ってきています。 Sheet2(data) A列(ID) B列(会社名) C列(科目)D列(項目名) E列(項目ID)F列(件数) G列(金額) Sheet3(CD表) A列(ID)B(会社名)C(会社ID)

  • 所有物の配分のための差し込み印刷について

    業者が物品の提供者から物をもらって、発注者に配分するときの帳票を作成するための差し込み印刷、またはエクセル管理方法について教えてください。 ・物品提供者には、「一覧表に示すような物品をご提供いただきました」というお知らせを送りたい。 ・物品発注者には、「一覧表の物品をお届けいたします。」というお知らせを送りたいです。 エクセルでの管理表としては 【提供者氏名】  【提供物品】  【発注者】 Aさん         α       bさん Aさん         β       cさん Dさん         θ       eさん Dさん         γ       bさん Fさん         φ       bさん <提供者への通知例> A様 以下の物品をご提供いただきましてありがとうございます。 記 α β <発注者への通知例> b様 以下の物品を発注いただいましてありがとうございます。 記 α γ φ エクセルの差し込み印刷で、 ・提供者の名前が同じ列の物品名を「記」以下に差し込みたい ・発注者の名前が同じ列の物品名を「記」以下に差し込みたい です。 イメージがわかりづらくてすみませんが、詳しい方どうぞよろしくお願いいたします。

  • エクセルのVLOOKUPの簡単な質問

    エクセルで簡単な郵便簿を作りたいのですが、    A   B      C       D       E               日付    部署コード  部署     1  001  経理部    9/1     001    経理部 2  002  企画部    9/2     008    総務部 こんな表で、A列、B列には最初から決まっている部署コードと 部署名が入っていて、D列にコードを入れると、A列から引っ張って きて、E列に自動的に部署名が表示されるようにしたいのですが VLOOKUPでどんなふうにすればいいでしょうか?

  • A列の特定条件のセルのときC列の数値を集計する関数

    以下のA列に1から3の値が入っている時、 例えば1の時のC列の数値を集計できる関数はありますか? A列1の時調べるとC列は1が1個、2が1個、3が1個です。 A列2ではC列は1が1個です。 A列3ではC列は1が1個です。 _|A|B|C 1|1| |3 2|2| |1 3|1| |2 4|3| |1 5|1| |1 よろしくお願いします。

  • エクセルの集計機能を横方向(列)に展開することはできないか?

     生産管理部門で働いている者ですが、最近、製造部門のモデル切替が多く、出庫表を作成する上で集計機能を使っています。   A       B    C  D  E 1モデル名  番号   台数 2 A1    001  100 3 B1    001   80 4 C2    001   55         001計 235 5 A2    003   70 6 B1    003   30 7 D2    003   45 8 E1    003  100 9       003計 245  こんな感じで番号フィールドを基準として台数列を合計して、集計行を挿入していますが、縦向きの表にはこれで十分対応できるのですが、たまに横長の表を扱わねばならない時があり、集計機能が使えないので、困っています。  集計機能は横方向(列方向)には使用できないのでしょうか?  モデルによっては対象でないものもあり、空白のままでも縦方向の集計には影響しないのですが、横方向でこれをやりたいのですが、関数しか無理でしょうか?  自動的に集計行が挿入されるので便利な機能で重宝していますが、横方向の集計は出来ませんか?  自動的に集計列を挿入してくれると、セル番地のズレ等も気にしなくて済むのですが。   A     B   C   D   E 1モデル名  A1   B1  C2  集計列 2 番号  001  001 001 001計 3 台数  100   80  55  235 4 5 と、こんな感じにしたいのですが、方法はありませんか?教えて下さい。

  • Dictionaryを使い4つの条件の一致で2つの集計列を集計したいのです

    条件4項目 日付&単位&単価&区分(A列、C列、D列、F列)の一致するもののB列及びE列を集計して別シートに書き出したいのです。  sheet1 A   B   C   D   E   F 日付  数   単位  単価  計   区分 3/12  2    人  10000 20000  通常 3/12  1    人  10000 10000  通常 3/12  1    時間  2000 10000  残業 3/14  4    時間  2000  8000  残業 3/15  4    人  10000 40000  通常 このような表を sheet2 A   B   C   D   E   F 日付 数 単位 単価 計 区分 3/12  3    人  10000 30000  通常 3/12  1    時間  2000 10000  残業 3/14  4    時間  2000  8000  残業 3/15  4    人  10000 40000  通常 のようにまとめたいのです。 Dictionaryを用い、A列、C列、D列、F列を一旦結合しkeyとし、同じものが登録されていたら、itemとしてB列及びE列の値を加算させて、登録件数分を書き出しという流れでやりたいのですが、出来ません。 助けて下さい。お願いします。

  • 条件がある列の集計の仕方

    数字が入っている列にもうひとつ条件をつけてその合計を求めたいのですが、関数が成り立ちません・・。 A列 B列 C列 D列 A  1      3 B  10  W  10 C  10      1 D  1   W  22  E  5      7 F  5   W 33 B列=1で、C列<>W(C列=0でもいいのかな?)のD列の合計を求めたいのです。 例の答えは、1=3 10=1 5=7となるようにです。 よろしくお願いします。

  • 複数のセルに合致するデータを全て表示する

    表1で1ヶ月分、日にちごとに誰が何を発注しているのかをまとめてあります。 (個人単位で1ヶ月のデータがでるようになっています。) 表2に1日単位で発注品毎に誰が頼んでいるか名前が出るように したいのですが関数で出来ますか? 表1    A列       B列  C列    D列            注文名 1行  氏 名 11 12 13 2行       日 日 日 3行  ああ  A B 4行  かか B A        5行  ささ  B C C 6行  たた  A A B 7行  なな  C B 8行  はは  A A 表2(11日の注文)     注文名  A     B     C           ああ  ささ    なな           たた     注文者  はは

  • 一定条件で文字の色を変えたい

    会社に寄せられた意見をまとめる表を作っています。 今後の対応などを考えどの部署に関するものかも併せて入力しています。 このときに部署の○を付け忘れを防ぐために、 D~Gに○がついていない場合Cの文字を赤などの色に変えたいと思っています。 条件付書式を使えばいいのかとも思うのですが、 何度やってもうまくいきません。 いい方法があれば教えて頂ければと思います。 表は以下のような感じです。 A  B   C     D    E   F    G 月 日 内容 総務 経理 庶務 営業・・・ 10 2 ***      ○ 10 4 ***  ○ ○

専門家に質問してみよう