- ベストアンサー
【エクセルVBA】空欄を無視して乗算したいです
エクセルVBA初心者です。 test1 = .Range("H28") * .Range("H31") * .Range("H32") * .Range("H33") * .Range("H34") * .Range("H35") * .Range("H35") と置いているのですが 例えば、H31が空欄の場合もあります。 そうしますと、乗算の結果が0になってしまうので、空欄を無視して答えを出したいです。 エクセルではPRODUCT関数を使っていたのですが VBAですと、どのように記述してよいのか分かりませんでした。 アドバイスをいただけると幸いです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (1)
- tom04
- ベストアンサー率49% (2537/5117)
関連するQ&A
- Excel VBA について
ExcelのVBAのコードでB列の1カ所の「zz2300」を取得したいのですが、 どういう記述をすればよろしいのでしょうか。 ※その列には同じ文字は存在しません。 test=Range("b65535").End(xlUp).Rowの定義があるのですが使えますか?
- ベストアンサー
- Excel(エクセル)
- エクセル VBAで
はじめまして。 VBA初心者です。 エクセルVBAで以下のことをしようとしていますが、 「型が一致しません」とエラーが出ます。 何がおかしいのでしょうか。 やろうとしていることは、以下のようなことです。 G2に入っている値を参照し>0なら、H2に”上昇”と表示。 <0なら、”下降”、=0なら”トンボ”と表示させ、G3以降も G列にデータが入っている限りそのように表示したいと思っております。 よろしくお願いいたします。 Sub 陰陽() If Range("G2:G10000").Value > 0 Then Range("H2:H10000").Value = "上昇" ElseIf Range("G2:G10000").Value < 0 Then Range("H2:H10000").Value = "下降" ElseIf Range("G2:G10000").Value = 0 Then Range("H2:H10000").Value = "トンボ" End If End Sub
- ベストアンサー
- Visual Basic
- エクセルVBAではRounddown関数はつかえないのでしょうか?
Excel2003SP2でVBAを使っています。 AAA = RoundDown(Range("A1"), 0) と入力してコンパイルすると 「コンパイルエラー SubまたはFunctionが定義されていません」 と表示されます。 エクセルVBAではRounddown関数は使用できないのでしょうか? それとも私の記述が何か間違っているのでしょうか
- 締切済み
- オフィス系ソフト
- エクセルVBAの掛け算
お世話になります。 VBA初心者です。 セルA1にはB1×C1の答え Range("A1").Value = Range("B1") * Range("C1") これを、B1が空白ならA1も空白に、そうでないならA1にB1×C1の答えを入れたいのですが 分かりません。 Range("A1").Value = "IF(B1="""","""",B1 * C1)"これだと A1に『 =IF(****** 』と関数が入ってしまいます。 どなたか 分かる方教えて下さい。 宜しくお願いします。
- ベストアンサー
- その他(業務ソフトウェア)
- 16進数どうしの乗算
Excel2003で、16進どうしの乗算をしたいです。もちろん関数は知っています(Sheet,VBA共に)。 しかしデータが掛ける数掛けられる数どちらも64bitあるので計算が出来ません。 そこでVBAを使ってコードを書いて計算しました。 でも私はその結果を64bitにしたいので、私の書いたコードでは10進数になってしまい、うまく行きません。 64bitにするというのは、Windowsについている電卓のように切り捨て処理をしたいからです。 頭を使って考えましたが、どうしても結局は10進数になってしまいます。Excelだからでしょうか。 ちなみに、64bitの数のうち、1つは固定された数です。 文章が汚くて解りづらいかも知れませんが、どうかお願いします。 *16進数の乗算をして2進数または16進数で結果を出す方法か、10進数でxxbitに揃える方法でお願いします。(それ以外でもやりたいことが出来れば気にしません。)
- ベストアンサー
- オフィス系ソフト
- Excel VBAで、空欄セルの場合に「なし」と自動的に入力するには?
ExcelのVBAで、ある列(例えばC列)のセルでEnterキーを押したとき、 空欄の場合のみ、自動的に「無し」と入力するにはどうしたら良いでしょうか? VBA初心者です。よろしくお願いします。
- 締切済み
- オフィス系ソフト
- エクセルVBAでの「値貼り付け、乗算」について
あるセル範囲に一度に一定の数を乗ずるには、その一定の数が入力されたセルをコピーしてから、形式を選択して貼り付けで、値貼り付け、そして「乗算」を指定するのがもっとも効率的かと思います。 これをVBAで行う場合、以下のようなコードになるかと思います。 Sub test05() Dim z As Range Set z = ActiveCell.SpecialCells(xlLastCell).Offset(1) z.Value = 2 z.Copy On Error GoTo line Range("A1:H3000").SpecialCells(xlCellTypeConstants, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlMultiply On Error GoTo 0 Application.CutCopyMode = False z.Clear Set z = Nothing Exit Sub line: MsgBox "対象内に数値がありません。" End Sub 上記コードは正しく作動します。 質問は、「その一定の数が入力されたセルをコピーしてから」の部分を、他の方法で代用できないかということです。上記コードでは最終セルのひとつ下、SpecialCells(xlLastCell).Offset(1)を使用していますが、SpecialCells(xlLastCell).Offset(1)が存在しない場合も理論上はありえます。 わざわざセルに転記し、それをコピーする代わりに、コード内で乗じる数を指定できないのでしょうか?
- ベストアンサー
- オフィス系ソフト
- Excel VBA ""を含む関数を使うには
Excel VBA ""を含む関数を使うには お世話になっております。 Excel VBAでMatch関数を使って下記のようにしたいのですが、 受け付けてもらえません。 n = Application.WorksheetFunction.MATCH("小計",range("B3:B10"),0) "小計"を""小計""と二重でくくれば良いような気がしたのですが、だめです。 どうすればよいでしょうか?
- ベストアンサー
- その他MS Office製品
- Excelで計算結果「0」を空欄にしたい
Excelで作成した表に全て関数を埋め込んだとき、計算結果が「0」の場合は空欄になるようにするにはどうすればよいですか?
- ベストアンサー
- Windows XP
- エクセルVBA(マクロ)の書き方で・・・
VBA初心者です。よろしくお願いします。 エクセルマクロで、次のような関数を入力して、 =IF(月!$D4=稼動シート!$B$2,月!B4,"◆") 自動記録をさせると コードは、次のような「絶対参照セル」(←表現あっていますか?)の表示になります。 『Range("C4").Select ActiveCell.FormulaR1C1 = "=IF(月!RC4=稼動シート!R2C2,月!RC[-1],""◆"")"』 わたしのスキルでは、この記述コードを参考に別のコードを書こうにも理解と応用が効きません。 そこで、VBAコードにも 『Range("C4").Select =IF(月!$D4=稼動シート!$B$2,月!B4,"◆")』 と単純に書いてはいけないのでしょうか?また、どうすれば実際のシートで入力した関数と同じような表現でVBAにもかけるのでしょうか? ご指導お願いいたします。
- ベストアンサー
- オフィス系ソフト
お礼
うまくできました! ありがとうございます。 参考URLが、VBA初心者の私には他にも役立つ内容が 色々とありましたので ベストアンサーとさせていただきました。 これからも少しずつ勉強していきたいと思います。