エクセルのマクロについて教えてください。
当方、超初心者です。
やり方が分かれば一番良いですが、ご回答いただく文章だけで理解するのは難しいかもしれないので、
文章でご説明いただいても結構ですし、分かりやすいサイト等があれば、そちらの共有していただくのでも構いません。
私のやりたいことは、
まず電気代、水道代、灯油代、ガス代についてAさん、Bさん、Cさんのそれぞれでデータを集めます。
それを毎月集計していくのですが、それぞれの金額の推移を折れ線グラフや積み上げグラフにして、人別のグラフにしたり、項目別のグラフにしたりして、所謂見える化をしたいです。
毎月、手入力して作成しても良いのですが、勉強のためにもマクロを使って簡易化したいです。
イメージとしては、
1つのエクセルファイルで、3つシートを作ります。
シート①には、毎月、指定したセルにデータをそのままペーストしていきます。
シート②で、マクロのボタン(?)を押すと、シート①の指定したセルの数値をシート②に記録していきます。ここで、月が替わるごとにデータが記録され続けていくようにしたいです。
例えば、初月(1月)は各データが1列目に記録され、翌月はデータが2列目に記録、その翌月はデータが3列目に記録される…を繰り返していき、シート②だけはデータがどんどん書き足されていくイメージです。
シート③で、見える化したい月のデータをシート②の集記録データから自動でセルを認識して、データを抽出してくる。そのまま、抽出されてきたデータで、折れ線グラフや積み上げグラフ等の数値情報が自動で書き換わり、その変動を確認できる。
このようなことをしたいです。
調べてみたのですが、イマイチ自分のやりたいこととドンピシャな解説されている記事が見つからなくて、困っています。
(きっとマクロでできることが多すぎて、色んなマクロの説明記事であふれかえっており、自分のやりたいことがピンポイント過ぎて、ヒントとなる記事を見つけられなかったのだと思います。)
有識者の皆様、お力お貸しいただけないでしょうか。
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
おそらくですけどマクロ以前にEXCELの使用歴が浅くないですか?
EXCELを使い込むと必ず1行目に項目名、二行目以降にデータという
形式を用いることが基本ということに気づかれると思うのです。
それは、例えばピボットテーブルやオートフィルターなどEXCELの
基本機能を活かすためにはその構造を選ばないとあとあと無駄だと
思い知るからです。
ご質問ではその構造が②ですね。
No4さんの仰るように①の必要性が???です。
そしてグラフの作成経験はどれぐらいお有りですか?
グラフは作成したグラフのデータのどの部分を使うかの
指定がVBAで変更できますから、全体をグラフに起こしても
使うデータがどこかだけを変更も可能です。
そういったEXCELをある程度使い込まないでその前にVBAに
進んでしまうと、無駄なコーディングをしがちになります。
なんちゃって私もC言語から来たので最初そうだったんです。
だからEXCEL側の最適化を先に十分に考ええる方が
のちのちお得じゃないかとは思います。
No.5
- 回答日時:
質問者様は、マクロの基礎は習得されていない超初心者とのことですが、C言語やpythonなどの言語の経験はあるとの事ですので、マクロの基礎を習得するのは、そんなに困難な事では無いと考えます。
ある程度マクロを習得された上で、部分的に困った事を質問された方がかえって近道なのではないでしょうか。
今の質問では、回答者にタダでマクロの基礎講座をやってくれとおっしゃられているに等しい質問内容ではないかと感じました。
これ、完全に禁止行為とは言い切れないけど、禁止行為である「作業依頼」に限りなく近いグレーゾーンの質問ではないでしょうか?
No.4
- 回答日時:
こんにちは、既に回答されている内容は私も同様に思いますが
横から失礼してアドバイスになればと思います
(回答はシート②の処理についてです)
>ここで、月が替わるごとにデータが記録され続けていくようにしたいです。
これは、所謂データベースとなる部分と存じます
所感としては各データの位置や見出しを再考するべきと思います
>電気代、水道代、灯油代、ガス代についてAさん、Bさん、Cさんのそれぞれでデータを集めます。
これには月を判断するデータがありません
(A列が該当して一意のデータは基本だから書かなかっただけと言うオチかも知れませんが)
シート③で行う作業を鑑みてデータを蓄積(配置)した方が良いと思います
月単位のデータで行が跨ると加工する時に分かり難い
例: 月単位で1行にまとめる (図を参照)
B列にAさんの電気代、C列にBさんの電気代としない理由は
カテゴリー(電気代、水道代、灯油代、ガス代)の優先よりも
Dさん追加やBさん削除などの時の改修が容易を優先しデータ抽出時も処理がしやすい(Step実行が容易)
シート①もこのデータ配置が良いと思います
そもそもシート①が必要なのかという事にもなりますが
貼り付けの元データにより貼り付け時 データ一の加工(位置の置き換え)が必要な場合はシート①に対するデータ加工のVBA組む必要があるかもしれません
図のようなデータ配置のシート①のデータをシート②に蓄積していくVBAの一例
シート①はSheet1、シート②はSheet2
各シートの見出し行(1行目は同じとしています)
行方向に蓄積 新しいデータが行末に蓄積されます
データフォーマットは加工していません シートの書式設定などで要設定
シート②にActiveXコントロールのCommandButtonを配置、押下をトリガーとします
元データ範囲は変数として取得して改修を考慮
Private Sub CommandButton1_Click()
Dim rng As Range
'元データ範囲を取得
Set rng = Worksheets("Sheet1").Range("A2:M2")
Dim n As Long
'Sheet2の行末+1で書き込み(新規)行ナンバーを取得
n = Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row + 1
'値の代入
Worksheets("Sheet2").Cells(n, 1).Resize(, rng.Columns.Count).Value = rng.Value
End Sub
個人的な意見ですが
要件のデータ配置がプログラム的に考えると最適でないので
構想に対してドンピシャな・・・回答ではないです
No.3
- 回答日時:
#1.2のfujillinさんの回答がなされえいます。
>イマイチ自分のやりたいこととドンピシャな解説されている記事が見つからなくて、
これは当たり前でしょう。
超初心者の方ですね?
マクロの基礎は修得なさっていますか?
あえて言いますが、プログラミングの(少しは)経験がないと、マクロで処理をするのは無理でしょう。
ところで、実際のところどこまで進んでいますか?
>1つのエクセルファイルで、3つシートを作ります。
>シート①には、毎月、指定したセルにデータをそのままペーストしていきます。
ここまではできていますか?それができたうえでシート②の作業に移れます。
まず少しずつ手作業でやってみることです。
そうすれば、
>初月(1月)は各データが1列目に記録され、翌月はデータが2列目に記録
は、1列目や2列目ではなく1行目や2行目の方が、処理しやすいと分かると思いますよ。
>超初心者の方ですね?
はい。質問本文にもあります通り、超初心者です。
>マクロの基礎は修得なさっていますか?
マクロの基礎は修得していないです。
学生時代にC言語をやったことはあるのと、今は独学ですが、Pythonをかじったことがある程度です。
>実際のところどこまで進んでいますか?
シート①は完成しています。
私がやりたいのは、
例えば、1月はシート①、B2セルにAさんの電気代、C2セルにBさんの電気代、D2セルにCさんの電気代…。
また、B3セルにAさんのガス代、B4セルにAさんの灯油代…。
としていきます。
それをシート②でボタンを押すと、シート②の2列目にそれらのデータが横一列に並ぶ。
さらに翌月(2月)も、
シート①には、2月のデータを先ほど同じセル(B2セル、C2セル…)にペーストします。
つまり、シート①はデータが上書きされていくということです。
そしてシート②でボタンを押すと、その分はシート②の3列目にデータが一列に並ぶということです。
同様に、3月、4月以降もシート①はデータを上書きしていき、
シート②に列が増えていくというイメージです。
シート③はシート②のセルを参照してグラフを作るだけです。
(この作業は自分で出来ます。)
No.2
- 回答日時:
No1です。
>いやいや、ごはんの方がおいしいでしょ。
>と言われている気持ちになりました。
あら、そうですか。
ご質問の文章(=抽象的なので)からは、このくらいしか回答を思いつけません。
強いてあげるならば、以下ぐらいしか紹介できません。
以下を、上から20くらいずつ読めば、少しは近いものはあるかも知れません。
(No1に挙げた「まとめて検索」なので、ないかも知れません)
https://www.google.com/search?q=%E3%82%A8%E3%82% …
https://www.google.com/search?q=%E3%82%A8%E3%82% …
「そんなのは、とっくにやったよ‼」
というおつもりかも知れませんけれど、ご質問文にはそれ以上の内容は書いてないので・・
質問者様が頭の中で考えていることをエスパー的に当てるつもりはありませんから。
No.1
- 回答日時:
こんにちは
>やり方が分かれば一番良いですが、ご回答いただく文章だけで
>理解するのは難しいかもしれないので~~
ご質問文が抽象的な文章なのに、どのような具体的な回答を求めているのでしょう?
ご自身のなさりたいことを具象化しなければ、具体的な回答は得られません。
それとも、分析の方法から全部考えてもらうことを期待しているのでしょうか?
まずは、どのようなグラフにしたいのかを考えましょう。
適当なダミーデータを用意して、どのようなグラフを作成したいのかを考えます。
データが蓄積してゆくようなので、常にそのデータ全部をグラフ化するのか(=ポイントが増加するので大量になる)、あるいは一部分(=一定期間。例えば直近〇年とか)を区切ってグラフ化するのかなどについても考えておきます。
目的とするグラフが決まれば、それに必要となるデータ(=グラフの元になる表)が決まると思います。
(グラフが複数なら、表も複数用意すればよいだけですね)
元となるデータから、その形式に抽出・変換すれば良いことになります。
エクセルの場合、グラフとデータの関係が変わらないのであれば、一度グラフを作成しておけば、データを入れ替えたり範囲を変更することで自動的にグラフに反映されるようになっています。
ですので、マクロ等で「グラフを作成する」必要はなさそうですね。
(事前に、グラフを設定しておけば一度だけで済みますので)
>自分のやりたいことがピンポイント過ぎて、ヒントとなる記事を
>見つけられなかったのだと思います。
ピンポイントと言えるくらいに具体化できているのなら、それを小さな処理単位に分解して検索すれば、大抵の内容は見つけられるはずと思います。
ネットにはエクセルに関する記事は溢れるほどありますので。
とは言え、コピペするだけで済むようなものはないと思いますから、もしもコピペで済ますことを期待しているのならそれはほぼ無理でしょう。
複雑なことをまとめて検索するような方法で行うと、そのような内容にマッチする記事はほとんどないと思います。
一方で、上記程度の内容であれば、マクロでももちろん可能ですけれど、グラフのデータ範囲の変更くらいであれば、関数でも可能と思います。
また、データの抽出についても、元データの記録方法や抽出方法を工夫しておけば、関数でも実現可能になるものと想像します。
ですので、場合によっては全体を関数等で実現することも可能なのではないかと想像します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセル作業の効率化マクロを教えて下さい 7 2022/02/06 00:47
- Excel(エクセル) VBA ふたつの同じ様式シートのセルをコピーしたい 2 2023/03/08 15:28
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) ②Excel 簡単にシートコピーしたら前日の残高と日付を変更させたい→マクロの記録でエラーが出ます 8 2022/07/16 20:40
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- Excel(エクセル) 【マクロ】転記ツール。転記先にデータがある場合、上書きするか消すか質問をして欲しい 2 2023/10/29 22:52
- Visual Basic(VBA) エクセルのマクロを教えてください 4 2022/02/04 08:05
- Visual Basic(VBA) 複数ファイルのデータの統合について 12 2022/05/14 12:03
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) 【VBA】データを入力後に,同一シート内に履歴として転記するVBAコードを教えていただきたいです。 3 2022/11/16 01:37
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
excelのVBAについて、以下のコードに追加をお願いいたします。
Visual Basic(VBA)
-
なぜか「Nextに対応するForがありません」
Excel(エクセル)
-
エクセル詳しい方教えて下さい
Excel(エクセル)
-
-
4
Excelで新しい出勤簿作りたいのですが分かる方お力添えお願い致します。
Excel(エクセル)
-
5
Excelの共有ファイルについて質問です。
Excel(エクセル)
-
6
エクセルで質問です。添付したように枠を設定する方法を教えて下さい
Excel(エクセル)
-
7
IF関数
Excel(エクセル)
-
8
Excelに入力しているタグ<br>にだけ、その部分にだけ改行させたい
Excel(エクセル)
-
9
Excelの関数で起きた現象の原因がわかりません。
Excel(エクセル)
-
10
Excel
Excel(エクセル)
-
11
VBA(えくせる)ってなんでメンテできない人が多いんですか?
Excel(エクセル)
-
12
エクセルの関数でわからないことあるのでコード付きで教えてください
Excel(エクセル)
-
13
エクセルで連勤チェックをしたいです。
Excel(エクセル)
-
14
Excelでこういう年を切り替えられる簡易なカレンダーを作ったのですが、 年や月を変えると、色が付い
Excel(エクセル)
-
15
引数に数値、文字列の混在
Visual Basic(VBA)
-
16
エクセルのセル統合について
Excel(エクセル)
-
17
VBA
Visual Basic(VBA)
-
18
Excelのテーブルでmatch関数の使い方について
Excel(エクセル)
-
19
エクセルの「パスの定義」の仕方について教えてください
Excel(エクセル)
-
20
EXCEl VBA
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのグラフ作成で軸を等...
-
EXCELでグラフを作るとき、縦軸...
-
Excelでx軸とy軸を設定して図を...
-
Excel:別シートにグラフを貼り...
-
エクセルで折れ線グラフ(散布...
-
エクセルの縦軸(Y軸)が不均等...
-
エクセルで折れ線と散布図を同...
-
散布図を縦に2個並べて出力したい
-
エクセルの円を5等分する方法
-
エクセルで、極座表のグラフ描...
-
エクセルのグラフの1点の色を変...
-
エクセルで作ったグラフの右側...
-
エクセルの対数グラフのエラー
-
定期テストの点数をExcelで折れ...
-
エクセル 0や空白のセルをグラ...
-
エクセルで階段グラフの作成に...
-
エクセル グラフはあるけれど...
-
ワードの差し込みにて、値をグ...
-
ExcelのグラフをPowerPointに貼...
-
2019エクセル折れ線グラフで、Y...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのグラフ作成で軸を等...
-
Excelでx軸とy軸を設定して図を...
-
エクセルの縦軸(Y軸)が不均等...
-
EXCELでグラフを作るとき、縦軸...
-
Excel:別シートにグラフを貼り...
-
エクセルで折れ線と散布図を同...
-
エクセルで折れ線グラフ(散布...
-
エクセルで式からグラフを作成...
-
エクセルの対数グラフのエラー
-
エクセル 0や空白のセルをグラ...
-
エクセルの円を5等分する方法
-
エクセルのグラフの1点の色を変...
-
エクセルで、極座表のグラフ描...
-
散布図を縦に2個並べて出力したい
-
エクセル グラフはあるけれど...
-
エクセルで作ったグラフの右側...
-
<EXCELグラフ>データ取得範囲...
-
Excelの横棒グラフのプロットエ...
-
エクセル グラフの”データーテ...
-
ExcelでIF関数によるグラフの表...
おすすめ情報