• ベストアンサー

エクセルVBA作成に関して

izmlzの回答

  • izmlz
  • ベストアンサー率55% (67/120)
回答No.1

VBAでなくても↓の関数でお望みの計算が可能です。 =SUMPRODUCT(A1:A4,B1:B4)

参考URL:
http://www2.odn.ne.jp/excel/waza/function.html

関連するQ&A

  • エクセル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(****** 』と関数が入ってしまいます。 どなたか 分かる方教えて下さい。 宜しくお願いします。

  • エクセルVBA

    A列を基準にBC列が空白ならAの数値を入れて、A>BならB列を更新、A<CならC列を更新 A列が数値以外ならその行をスキップ、という処理をしたいのですが Option Explicit Dim A As Range, B As Range, C As Range Dim i As Long Sub test() For i = 1 To 10 Set A = Cells(i, 1) Set B = A.Offset(0, 1) Set C = A.Offset(0, 2) If IsNumeric(A) Then Else Exit Sub End If If B.Value = "" Then B.Value = A.Value If C.Value = "" Then C.Value = A.Value If A.Value > B.Value Then B.Value = A.Value If A.Value < C.Value Then C.Value = A.Value Next i End Sub とすると数値以外の行の時点で停止してしまいます。 その行を飛ばして次の行に進むにはどうしたらいいのでしょうか?

  • ExcelのVBAに詳しい人に質問です

    下記のURL画像のような表があります。 http://www.poverty.jeez.jp/ura/img/kenmou01000.png A列に入っている1~62までの文字(画像ではわかりやすく数字にしています。)を、右の表の番号をふっている箇所に順番通りに挿入するVBAを組みたいのですが、どのような書き方が1番効率的なのでしょうか。 例えば、一つ一つやるなら62列も一々打つことになるので手間がかかってしまいます(;´Д`) Range("B5").Value = Range("A1").Value Range("C5").Value = Range("A2").Value Range("D5").Value = Range("A3").Value 何か良い方法はありますでしょうか。数学が出来ない馬鹿な私にアドバイスよろしくお願いしますm(_ _)m

  • ExcelのVBAで・・・

    VBA初心者です。。 Excelのある列のセルの値が全角文字の場合に、 隣の列に全角カタカナに変換した値を転送するVBAがあります。 変換元の列の中に空白セルがあった時は変換先のセルに 文字があっても空白に置き換えたいのですが、方法がわかりません・・・。 使用しているVBAの内容は下の通りですが、どういう風に 修正すれば実現できるかアドバイスを頂けないでしょうか? よろしくお願い致します!   Dim C As Range   For Each C In Range("E3", Range("E65536").End(xlUp))     If C.Value <> "" Then _     C.Offset(, 1).Value = Application.GetPhonetic(C.Value)   Next

  • Excel VBA の作り方について【初心者】

    Excel VBA の作り方について質問させてください。 A1セルに「営業部【山本】」と入力されています。 B1セルに「01:35:24」(タイム)と入力されています。 (1)D1セルに「山本」を抜き出して表示 (2)E1セルに「95」(分数)で表示 (3)A2以降で同じ作業の繰り返し(最終入力列まで) というVBAを作成しております。 Sub macro1() '行数確認 nr = Range("A1048576").End(xlUp).Row For i = 1 To nr '名前抜き出し x = Range("A1").Offset(i - 1) j1 = InStr(x, "【") j2 = InStr(x, "】") Range("D1").Offset(i - 1) = Mid(x, j1 + 1, j2 - j1 - 1) '分表示 x = Range("B1").Offset(i - 1) Range("E1").Offset(i - 1) = Int(x * 24 * 60) Next i End Sub ここまではプログラムが完成しています。 この後、 (4)C列セルに入力されている数値をF列セルにそのまま入力 したい場合には、どの部分にどのようなプログラムを追加すればよいでしょうか? よろしくお願いします。

  • Excel VBAの繰り返し構文について

    A列に日付、B列に曜日、C列に休、D列に1直、E列に2直、という形の年間シフトを作成しています。 初期値としてA2セルに数字を入力→C列が空白の時だけD列に記入するマクロを作成したと思っています。 現在仮として、 Sub C列のセルが空白の行のD列に数値を入力() 下端行 = Range("A" & Rows.Count).End(xlUp).Row '下端検出 For 行 = 3 To 下端行 '1行目から下端行まで1行ずつ繰り返す If Range("C" & 行).Value = "" Then 'その行のC列のセルの値が空白の時 Range("A2").Copy 'A2をコピーする Range("D" & 行).PasteSpecial Paste:=xlPasteFormulas 'その行のA列のセルを起点に 'して数式を貼り付ける End If Next End Sub というマクロを置いていますが、「Range("A2").Copy」の部分を 「A2を初期値として、最初にC列が空白でなくなる時まで初期値を繰り返し、次にC列が空白になった場合は初期値+1の数をD列に入力する。 ただし初期値+1の最大数は6までとする(要するに1~6の繰り返しです)」 という感じに変更したいのですが、どうすればいいのかさっぱりです…。 VBAレベルはこの質問をする程度なのでかなり初級です。

  • EXCEL 2010 VBAまたは関数について

    こんにちは 初投稿です。 早速ですが、VBAまたは関数について質問させて頂きたいのですが・・・ 一つのセルに複数の数字と文字列がセルのE1混ざっている場合, (12345abc678cdef9ghijk)と入っている場合 にこの例で行くとセルのA1に12345セルB1に678セルC1に9というように数字で表示させたいのです が、最初関数で A1=VALUE(MID(E1,1,5)) B1=VALUE(MID(E1,9,3)) C1=VALUE(MID(E1,16,1)) と言う形で数字だけ抜き出していたのですが これだと数字の桁数が違ってくる(※正し文字列の長さは一緒 数字だけが桁が違ってきます) と表示されなくなってしまうため、 出来れば関数をいじらなくても表示されるようにしたいのです。 VBAもしくは関数でこの問題を解決出来る方がいらっしゃるなら どうぞよろしくお願い致します。 長文失礼致しました。 | A | B | C | D | E | ------------------------------------------------ 1 | 12345 | 678 | 9 | | 12345abc678cdef9ghijk | 2 | | | | | |

  • Excel VBAで…。

    データーシート(1)のデータをレイアウトシート(2)に転記するのに 例えば sheets(1).range("A1").value=sheets(2).range("C5").value sheets(1).range("B1").value=sheets(2).range("C6").value sheets(1).range("C1").value=sheets(2).range("C7").value と言うように配置しているのですが もし、シート(1)セルB1の値が空白ならば シート(1)セルC1の値はシート(2)のセルC6に配置・・・ と言うように データがない場合は、転記後の配置は詰めて配置したいのです。 どうすればよろしいでしょうか?

  • エクセル SUMPRODUCT関数でこんな場合は?

    Excel2000です。 添付画像のような表があります。 A列、B列に数値、C列に文字列です。 A列の数値は単なる数値ではなく、計算式で求められています。 したがって表内A列の何も表示されていないセルは、計算の結果 ="" になったものです。 B列の数値は直接入力した単なる数値です。 この表で仮に、C列がAの場合のA列合計を求めるため、D6に =SUMPRODUCT((A1:A5)*(B1:B5)*(C1:C5="A")) としてみましたが、="" を乗じているためVALUEエラーになります。 =""を排除しようと、 =SUMPRODUCT((A1:A5<>"")*(A1:A5)*(B1:B5)*(C1:C5="A")) としてみましたが、やはりVALUEエラーになります。 こういう場合はどうしたらよいのでしょうか? ="" を =0 に変えるという回答以外でお願いいたします。

  • エクセルVBAとワークシート関数が違う答え?

    エクセル2013です。 A1セルからA100セルにすべて1%と入力されています。 BIセルに =SUM(A:A) と数式が入っており、100%と表示されています。 A,B列のセルの書式はすべてパーセテージです。 101行以下には何も入っていません。 C1セルに =B1=1 と数式が入っており、TRUEが表示されています。 標準モジュールに Sub test01() MsgBox Range("B1").Value = 1 End Sub と書きました。 実行したところFalseが帰ってきました。 なぜ、TRUEにならないのでしょうか? なお、 Sub test02() MsgBox Val(Range("B1").Value) = 1 End Sub とすると、TRUEが帰ります。 でも、Val関数はStringを数値化するものですよね? B1セルはもともと数値なのでVal関数で答えが変わるのも不思議です。 どなたか、わかるように教えていただけないでしょうか?