• 締切済み

セルの文字式の計算をVBAで行いたい

A1のセルに "100+5n" という文字式が入っている状態で VBAにてこのセルの文字式計算を行いB1のセルから順に結果を出力したいと思っています。 "n"は1から順に指定された数まで1づつ増えていくようにし B1のセル:105、C1のセル:110、D1のセル:115 ・・・・ と結果がなるようにしたいのですが、VBAでどのように記述すればいいのか悩んでいます。 VBAを使わずにExcelの関数で計算できるのならそれでもよいと思っています。

みんなの回答

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

次の式をB1セルに入力し、右横方向にオートフィルドラッグしてもよいですね。 =LEFT($A1,FIND("+",$A1)-1)+MID(SUBSTITUTE($A1,"n",""),FIND("+",$A1)+1,10)*COLUMN(A1)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

A2セルには次の式を入力して右横方向にオートフィルドラッグします。 =IF(COUNTIF($A1,"*+*"),LEFT($A1,FIND("+",$A1)-1)+MID(SUBSTITUTE($A1,"n",""),FIND("+",$A1)+1,10)*COLUMN(A1)) この式では100の数値や5の数値が別の数値に変わってもそれが反映されます。

  • notnot
  • ベストアンサー率47% (4847/10258)
回答No.1

どんな文字式があり得るのか?たとえば、"sin(n)" など三角関数が出てくることはたぶんないと思いますが、「任意の式があり得る」だとその解析が非常にめんどくさいです。 「"100+5n" のパターンだけで、100と5の数字だけが変わり得る」だとまだましですが。それだと"+"と"n"の位置を調べて、left()とmid()で、"100"と"5"相当を切り出せばいい。 もし「任意の式」ということだと、実現したいことの他の実現手段を考えた方がいいと思いますよ。

関連するQ&A

  • VBA 別シートの計算表

    Excelについて。 シートAに、計算表があります。 セルa1に入力した値によって、いくつかのExcel関数を利用して、 セルb1に結果を出力しています。 いつも、手入力でセルa1に値を入力して結果を求めていますが。 今度、シートBに膨大な入力するための数値があるので、VBAで自動化できないかと考えています。 今回の質問は、VBAで記述する際に、シートAの入力セルa1に、シートBの入力値を1つずつ代入していき、結果のセルb1をシートBの入力値の隣に出力していこうと考えています。 シートAのa1に入力値を代入して、すぐに結果b1の値を結果出力セルに代入していいのでしょうか? 計算表(シートA)での計算を時間をおく必要があるのでしょうか?=一旦、他のセルを選択するなど。 よろしくお願いします。 ・計算表での計算時間は、1秒未満です。 ・計算表の計算過程もVBAで書けば済む話ですが、プログラミングには疎いので、計算表をそのまま利用したいと考えています。=入力の代入だけVBAで書いていきたいと思います。 ・その他、アドバイスなどいただければ幸いです。 よろしくお願いします。 Excel2010

  • VBAのプログラムとシートでの計算の速度

     現在、エクセルVBAでマクロを組んでいます。 マクロで算出した値を、セルを指定して、シートに代入しています。シートの代入する理由は、途中の計算結果の確認とエクセル関数を利用し、マクロの簡便化を図りたいためです。  代入した値を基にして、エクセル関数を使った結果の値を、他のセルに表示(代入)していますが、VBAで、その結果の値を、利用しています。  お聞きしたいのは、最初にシートに代入してから、エクセル関数の結果を得られる前に、VBAが、値を取得しないかどうか心配です。  素人考えでは、同じエクセル上で動作しているので、エクセル関数の計算終了後に、VBAが動くと思いますが。どうでしょうか?

  • エクセル2002VBAで合計を計算したい

    単純なことなのかもしれませんが… エクセルVBAでセルの足し算をしたいのです。 セルA1に合計を出したくて A15+A25+A35…と、A155までの足し算の結果をA1に出したいのです。 また、A2のセルにはA16+A26+A36… A3にもA17+A27+A37…と。 そしてB1,B2,B3にも、B15+B25+B35…B16+B26+B37…B17+B27+B37とそれぞれ。 C列にも同様にです。 A1からC3までに、同じような演算の結果が出るということです。 これをエクセルのSUM関数を使わずに、VBAの記述で実現したいのですが・・・ どういう記述の仕方があるでしょうか?

  • 特定のセル範囲で4文字以上入力されているセルの数をカウントしたい

    特定のセル範囲で4文字以上入力されているセルの数をカウントしたいと思っています。 VBAで記述すれば簡単なことだと思いますが、これくらいなら関数でもできそうだと思い チャレンジしてみましたが挫折しました…。 関数の引数に「A1:C5」などという感じで範囲を指定する記述で できれば短くシンプルな記述を希望しています。 よろしくお願いします。

  • エクセルVBAで、選択セルを常にC行にする。

    エクセルVBAで、選択セルを常にC行にする。 例:ボタンをクリックすれば、選択しているセルがN25ならC25になり、N7ならC7にしたいのです。 選択セル範囲がB2:N12ならば、一番上を有効として、C2のみを選択範囲としてほしいのです。 VBAで記述するならどのようになるか。ご教示ください。

  • セルの数式を計算させないで文字列として表示させたいのですが

    例えばB1セルに=sum(A1:A5) と打つとその計算結果が表示されます。 そして僕は、その下のB2セルに、「=sum(A1:A5)」と、文字列として表示させたいのです。 どうしてかと言いますと、B1セルには「=sum(A1:A5)」と打ったんだよ ということを B2セルに表示させておきたいのです。 そうすればそれをプリントして、暇なときに見たりして ああ、このセルには「=sum(A1:A5)」と打ったんだな、とわかり、 いろんな関数を覚えれると思ったからです。 しかし、B2セルにB1セルをコピーしてしまうと、B2セルは=sum(A1:A5)となってしまい、 当たり前ですけど計算結果が表示されてしまい、 「=sum(A1:A5)」を文字列として表示できないのです。 何かうまい方法はないものでしょうか? VBAで出来そうな気はするのですが出来ませんでしょうか?

  • 列にセル値と同じ文字があればその行の個数を返す

    セルM5に=IF(L5="","",SUMPRODUCT(($A$5:$A$11=L5)*MONTH($B$5:$E$11)=M$3)))を入力した結果指定範囲の個数2を示しM11まで順に12月のセル数を返しますが、N5セルに 同じようにIF(L5="","",SUMPRODUCT(($F$5:$F$11=L5)*MONTH($G$5:$J$11)=N$3)))を入力した場合なぜか1月の範囲内個数2ではなく空白を含めた全セル数4を返し以降も同じよう返します。他の月では問題ないのですが1月だけなぜか指定月の個数が帰りませんどなたか関数の解る方宜しくお願いします。

  • 計算式で任意のセルを指定できるようにする

    うまく説明できるか自身ないですが…。 Excel2000で、ある計算式(変換式というべきか?)を作りました。 とりあえず、セルA1に数字を入力すると、セルA2に結果が出るように作成しています。(四則演算や、VLOOKUPを使った文字列操作などを複数のセルを介して行い結果を出しています) やりたいことは、最初のターゲットを任意のセルを指定できるようにしたい(計算式を関数のように使いたい)のですが、そんなことは可能でしょうか。

  • セル内の同一文字の個数を測定

    セル内にある同一文字の個数を測定したいのですが 有効な関数はないでしょうか? たとえば・・・ A1セル内に”あいうあいうあい”となっていた場合、 ”あ”の数(結果=3)を出力したいのですが、 どういった関数を使えばよいのでしょうか?

  • Excelで文字列を独自の二進数で表したい。

    A,B,C,D,Eのいずれかを含む文字が順不同でセルに入っているものから、 A=10000 B=1000 C=100 D=10 E=1 と置換して足した、二進数であらわしたり、逆にその二進数から文字列に戻したりしたいです。 (例:DAなら10010、EBCなら1101) VBAの自作関数を含めてExcelの関数でできる方法があればお教えくださると助かります。

専門家に質問してみよう