MENU

VBAで計算書を作る~VBAでExcel関数を利用する~

こんにちは、たかまいです。

数回に分けてお届けしているブログ前回はこちら

あわせて読みたい
VBAで計算書を作る~計画編~ こんにちは、たかまいです。今回はVBAで計算書を作る練習をしていきます。現在実施の作業時間でいうと確認作業もいれて30分程度この作業がほぼすべて自動化できるとお...


今回は計算書を作るという所の中で実際にCSVファイルから抽出したデータを利用して各価格毎に振り分けを行い計算書データに移すという作業を行っていきます。

このブログは将来自分が見返したときにこんなところに躓いたという履歴を残すため、敢えて失敗したところも載せています。
正しい情報を知りたい方はきちんとしたVBAerのブログを参考になさってください。
逆にIT原始人が陥ってしまう様子を知りたい方(どんなところで躓くのかが理解できない方)はこちらを見るとIT原始人の脳内が少しわかる・・・かもしれません。

先日のブログのこの部分を実行しています。

仮案②
1.作業したいファイル(CSV)と実行したいマクロを同じフォルダに入れる
2.CSVのデータを読み込み実行マクロのシートに入れる(Sheet2)
3.計算書にSheet2の価格ごとのデータ件数を数えて入力
4.計算書データをPDF保存。
5.業者に送るメールの本文の内容がクリップボードに入る。
6.Sheet2を削除する。

ちなみに完成形はこちら

価格はあらかじめ記載されていて、個数が入力されると自動で合計金額が記載される
こちらが抽出したCSVファイルこの表から割引後価格を抽出する。

件数を数えるにはCOUNTIF関数を使用したいと考えつき、頭の中で構想。
同時に最終行の取得をすることで応用きかせたいなと漠然と考える。
※COUNTIFは範囲指定をするのにForNextで一行ずつ探していくということを試してみてひたすらミスの無限ループ(3時間)コメントアウトしたりイミディエイトウインドウ確認しようとしたり、
そもそも.Cellsの範囲指定間違っていたりと、、、
一見この無駄に見える時間ですが、自分の脳内をフルに動かしたことでCellの番地指定が前よりは理解が深まりました。

この迷い切った途中経過がこちら。Withでわかりやすくしようとする努力をしたりはしている


今回の計算書は価格が3種類であらかじめ記載済みの計算書からデータが取れてイコールになればいいんじゃないかと思いつく。(x、y、zの登場)

ここでいよいよあれ?Dim iいらなくね?ってなる。

これで試したところりんごのところに正しい数字が!!
あれ?iの変数指定使うところないやんってことに気づく
(そもそもXYZも変数?なのかは謎)

で、できたーーーー!!しかしなんか読みづらい

この式で思った通りの場所に思った数字が入った!!!
しかし”計算書”多いな!!Withの使う場所間違ってない!?と思う。

逆に計算書の方をWithにするとちょっとすっきり

今の実力ではこれが限界!!
多分もっとスマートなものがあるはずですが。

ただこの紆余曲折をしながら得たものはきっと忘れない。

一番悩んでいた場所が解消したので、
あとはPDFのデータ保存とメールの文章を作成するという所のみ。

明日までにできそうな気がしてきました(^^)/

それでは、また

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

VBAを身に着けたい運動指導者
ノンプロ研にはまっています

コメント

コメントする