2013
5
09

掛け算と割り算の式を分解してリスト化するExcelVBA

とんでもなく需要は少ない気がするのですが、せっかく組んだのでメモがてら。意外とどこかで誰かの役に立つかもしれないし!


目的

わたしは製造業勤務でして、現場の方からこういう要望があったのです。

「こっちの表ではひとつのセルに総数を出しておいて、他のセルとSUM関数とかで計算できるようにしておきたいんだけど、出荷表に転記するときに出荷時の袋数で出るようにしたい」と。

ひとつの袋に入っている数が同じなら、指定の数で割った商と余りを出せばいいので難しくないんですが、違うこともあるみたいなんですよね。で、頭を捻ってこんな感じにしてみました。

130509-1

入数×袋数の数式を使って書いてもらっておいて、その数式を分解して、違う場所(この図なら、C~Eのセル)へリスト化する、と。

いろいろと面倒なので、入力のほうで「*」と「+」以外は使わないようにしてもらっています。かっことかもなくても大丈夫とのことなので。使えない文字が含まれている場合はエラーが出るようにしておきます。

コード

A1に入っている数式を分解してC~E列に出力します。下3つのプロシージャは呼び出し用なので、起動は「数式分解」のプロシージャです。モジュール内で跨いで使う変数はPrivate宣言しています。

起動方法とか宣言についてとかはこちら。

解説

それなりに長いので細かい説明は省いてしまいますが、IsNumericを使って数式が含まれているか判断しながら、InStrで「+」または「*」の位置を特定して、その左側と右側をそれぞれ取り出してごにょごにょしていくって感じです。実際に走らせてF8で1行ずつ確認していくと動きが分かりやすいと思います。

F8っていうのはステップ実行のことです。

以上です。出荷関係のお仕事の方の参考になれたら幸いですw

  • このエントリーをはてなブックマークに追加
  • follow us in feedly 618
  • RSSを登録

公開日:2013/05/09
更新日:2014/02/26


コメントを残す




*印は必須項目です。コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にですがスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。)


back to top