VBA初心者です。 非常に困っております。
Excel 2003を使用しております。VBAにて下記のリスト表があるとします。
2010/04/05 りんご 30円
2010/04/12 みかん 20円
2010/06/12 もも 15円
2010/05/21 ぶどう 20円
2010/05/09 みかん 20円
このデータをExcelシートに入力されている場合、VBAのコンボボックスを使用して、
4月・・5月といったリスト表にて5月のデータのみを抽出するにはどうすればよろしいでしょうか?
オートフィルタみたいな感じで結構です。さらに抽出した5月分のデータの計算を求めればどうすれば良いでしょうか?→合計値は、任意のセルに入れば良いです。
すいませんが、分かる方、丁寧なご回答のほどよろしくお願いいたします。
No.5ベストアンサー
- 回答日時:
ANo.4です。
> ですが、コンボボックスを作ってみましたが、リストウィンドウをクリックしても、写真のような5月・・6月といったメニューが全く出てきません。(白地)何が原因なのでしょうか?
そこからですか……。
シートの何処かに1~12の数字を入れておき、コンボボックスのListFillRangeにそのセル範囲を設定してください。
また、余計な事かも知れませんが、この程度の事でコンボボックスやVBAを使う事はまずありません。実際に使用されるブックを作る場合には、マクロのセキュリティに左右されず、メンテナンスも楽な、セルの入力規則とセル式の組み合わせをお勧めします。
参考までに、セルの入力規則とセル式の組み合わせでやる方法を……。
前回の添付画面のシートそのままで、F3に月の選択、F1に月ごとの合計を出します。操作は、Excel2003をもとに書きます。
F3セルを選択、上部メニューの[データ]-[入力規則]を選択。
「データの入力規則」画面の「設定」タブで、入力値の種類を「リスト」、元の値に「1,2,3,4,5,6,7,8,9,10,11,12」と入力。
次にF1セルに↓の式を入れる
=IF(F3="","",SUMPRODUCT((MONTH(A1:A5)=F3)*(C1:C5)))
了解しました。ありがとうございました。
確かにこのレベルではVBAを使わなくても関数でできるんですね。 参考にもまだ初心レベルなのでVBAの使い方も勉強になりました。 早速使わせていただきます!
No.4
- 回答日時:
「○○円」と言うのが、実際には数値だけで、書式で単位を付けている前提。
セル式でやるなら↓
=SUMPRODUCT((MONTH(A1:A5)=5)*(C1:C5))
コンボボックスとVBAを使ってやりたいのなら、これをComboBox1_Changeで実行すれば良いので
Private Sub ComboBox1_Change()
Range("E1").Value = Evaluate("SUMPRODUCT((MONTH(A1:A5)=" & ComboBox1.Value & ")*(C1:C5))")
End Sub
でも、入力規制のリストとセル式の組み合わせの方がメンテも楽ですよ。
この回答への補足
早速のご回答のほどありがとうございました。
素晴らしいです、この発想を待っていました。
さっそく、このコードを使用して作ってみました・・・
ですが、コンボボックスを作ってみましたが、リストウィンドウをクリックしても、写真のような5月・・6月といったメニューが全く出てきません。(白地)何が原因なのでしょうか?
初心者ですんませんがご指導のほどよろしくお願いいたします。
No.3
- 回答日時:
VBAを使うまでもなく、SUMIFワークシート関数で、できますよね。
SUMIF関数で5月分の合計を求めるには、(5月より後の合計)-(6月より後の合計)とします。
あとは、EXCELのヘルプで「ドロップダウンリスト」「SUMIF関数」を見てください。
No.2
- 回答日時:
日付について 他の方が言うように
月としてのフィールドを設けたほうが簡単ですね
それが出来ないのであれば シリアル値で範囲で取得するしかありません
ワタシだったらシリアル値の範囲で取得して配列に格納します
No.1
- 回答日時:
1.別のセルに月(年月)を表示するようにします。
→ 日付のセルを参照するようにして、書式設定します。
2.オートフィルタで1を使用して5月のみ表示させます。
3.2で表示された金額部分を全部選択して右下のステータスバーの表示を
合計にすれば選択した合計が表示されます。
セルには入りませんが、合計がわかる方法ということで。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA ドロップダウンリストを残して値のみクリア 2 2022/10/27 05:42
- Visual Basic(VBA) VBA 連続する名前ごとに集計 3 2022/05/21 18:24
- Visual Basic(VBA) 複数シートの複数列に入力されているデータを重複なしで抽出するVBAを作りたいです。 9 2022/06/17 10:33
- Visual Basic(VBA) 【VBA】データを入力後に,同一シート内に履歴として転記するVBAコードを教えていただきたいです。 3 2022/11/16 01:37
- Excel(エクセル) VBA セルの値と同じ名前のシートにデータを貼り付けするやり方を教えてください 2 2022/05/17 16:26
- Excel(エクセル) VBAでユークリッド距離を用いて1番近い物を表示 表 裏 縦 横 高さ 縦 横 高さ 名前 1 45 9 2022/10/23 16:52
- Excel(エクセル) Excel 表の作成について 3 2022/06/16 12:15
- Excel(エクセル) Excelについて教えてください。 帳票データがあります。 アクセスに取り込むため、 データ形式にし 1 2022/06/08 19:59
- その他(資産運用・投資) 年利回りの計算方法について 5 2023/01/03 19:38
- その他(データベース) 20万行あるデータを動かしたい 2 2023/06/13 15:21
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
同一セルに日時があるものを日...
-
COUNTIFの反対の関数はあるので...
-
1年分のデータから特定の月分...
-
Excelで指定した条件と一致する...
-
適切な関数を教えてください。
-
EXCELでCSVファイル保存すると...
-
Excel2007 飛びセル・条件付の...
-
決められた数字の組み合わせが...
-
エクセルVBAで、複数セルのデー...
-
連続データの計算式かVBAの質問
-
VBAの年月を取得したいのですが
-
エクセルで数字、文字列混在の...
-
エクセルシート1にWEBページの...
-
5つとびのセルの集計
-
セルの着色を認識する関数って...
-
excelでカレンダーから予定を別...
-
excelで平均差を出したい
-
【ExcelVBA】全シートのセルの...
-
エクセルで円グラフに引き出し...
-
Excelで、空白を表示したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
1年分のデータから特定の月分...
-
同一セルに日時があるものを日...
-
EXCELでCSVファイル保存すると...
-
Excelで指定した条件と一致する...
-
COUNTIFの反対の関数はあるので...
-
1つのセルにまとまっている情報...
-
ドロップダウンリストで空白の...
-
エクセルで数字、文字列混在の...
-
エクセルでセルを一括で右詰に...
-
エクセルVBAで、複数セルのデー...
-
複数のシートの日付データを、...
-
EXCELで年月日の表記から日付部...
-
OFFSET関数を使用した印刷範囲...
-
EXCELで足し算できるのにSUM...
-
色なしセルの合計値の出し方に...
-
webクエリのurlの変更方法
-
Excelで連続データを行飛ばしで...
-
excelで平均差を出したい
-
エクセル数式・等間隔ごとの範...
-
エクセル
おすすめ情報