質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

5回答

914閲覧

VBAで数式入力したい

cd987456

総合スコア33

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2018/11/14 06:24

編集2018/11/14 06:51

エクセルVBAで足し算したいです。

内容はシート内のA、B列に品番と数量が記載されています。(下図参照)
イメージ説明

マクロを実行すると、E列に数式が入るようにしたいです。
D列の品番は予め入っています。

例えば、品番AはA列に2つあります。 ”=10+30”となります。

コードを書いてみました。

maxrow = Cells(Rows.Count, 1).End(xlUp).Row For cnt = 3 To maxrow Set rng = Columns(4).Find(what:=Cells(cnt, 1).Value, LookAt:=xlWhole) If Not (rng Is Nothing) Then selerow = rng.Row If Cells(selerow, 5) = "" Then Cells(selerow, 5) = "=" & Cells(cnt, 2).Value Else Cells(selerow, 5) = Cells(selerow, 5) & "+" & Cells(cnt, 5).Value  ’★ End If Else MsgBox "品番がみつかりませんでした。" End If Next cnt

実行すると、品番B~Dは図のようになりますが、
品番Aは"10+30"と入り、"="が抜けてしまいます。

コードをどのように修正すればよろしいですか?
もっとスマートな書き方があれば、教えて下さい。

●質問後に追記しました。
★の部分のコードを下記に変えたら

Cells(selerow, 5) ="=" & Cells(selerow, 5) & "+" & Cells(cnt, 5).Value

例えば、品番Aが3つ以上あった場合
品番A 10、20、30 の場合
上記コードだと
"=30+30" 最初の"10+20"は数字になってしまいます。
"=10+20+30" とはなりません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

torisan

2018/11/14 06:47 編集

単純に『"=" &』を付ければいいのでは。そういう話ではない?<追記>同じセルに書き込んでますかね?なら最後に一括で'='を付ければいいかと。
guest

回答5

0

自己解決

自己解決致しました。

Cells(selerow, 5) = Cells(selerow, 5) & "+" & Cells(cnt, 2).Value   ↓ Cells(selerow, 5).Formula = Cells(selerow, 5).Formula & "+" & Cells(cnt, 2).Value

投稿2018/11/14 08:14

cd987456

総合スコア33

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

E列は数式を設定する必要あるんですかね?
数字が見れればいいんだったら単純に足しこんでいけばいいかと。

ちなみに、数式を参照/設定するのは別の方法らしいです。
https://www.moug.net/tech/exvba/0050098.html

投稿2018/11/14 07:17

takasima20

総合スコア7458

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

E列を文字列型にして
'='は最後に一括で付けましょう。

投稿2018/11/14 07:17

torisan

総合スコア678

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

VBA

1Cells(selerow, 5) = Cells(selerow, 5) & "+" & Cells(cnt, 5).Value 2 3'ここは 4 5Cells(selerow, 5) = Cells(selerow, 5) & "+" & Cells(cnt, 2).Value 6 7'こうだと思います。

投稿2018/11/14 07:15

trick

総合スコア366

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

数式のSUMIFを使ってください。

投稿2018/11/14 06:36

ExcelVBAer

総合スコア1175

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問