Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5423 / 13644 ツリー ←次へ | 前へ→

【50875】複数のSUMIFを更に足す とむ 07/8/21(火) 13:06 質問[未読]
【50876】Re:複数のSUMIFを更に足す Jaka 07/8/21(火) 13:18 発言[未読]
【50877】Re:複数のSUMIFを更に足す とむ 07/8/21(火) 15:39 質問[未読]
【50878】Re:複数のSUMIFを更に足す Jaka 07/8/21(火) 15:44 発言[未読]
【50879】Re:複数のSUMIFを更に足す とむ 07/8/21(火) 16:01 回答[未読]
【50880】Re:複数のSUMIFを更に足す Jaka 07/8/21(火) 16:48 発言[未読]
【50881】Re:複数のSUMIFを更に足す とむ 07/8/21(火) 17:12 お礼[未読]
【50883】Re:複数のSUMIFを更に足す Jaka 07/8/21(火) 17:37 発言[未読]

【50875】複数のSUMIFを更に足す
質問  とむ  - 07/8/21(火) 13:06 -

引用なし
パスワード
   複数のSUMIFを更に足す場合どうすればいいのでしょうか?

現状、
    Dim ws1 As Worksheet, ws2 As Worksheet, ws3 As Worksheet, Rmax As Long
    Set ws1 = ThisWorkbook.Worksheets("Sheet1")
    Set ws2 = ThisWorkbook.Worksheets("Sheet2")
    Set ws3 = ThisWorkbook.Worksheets("Sheet3")
    Rmax = ws2.Range("D65536").End(xlUp).Row
    Rmax = ws3.Range("C65537").End(xlUp).Row

    Dim AB, BA As Long
    AB.Value = Application.WorksheetFunction.SumIf _
       (ws2.Range("D1:D" & Rmax), ws1.Range("D8").Value, ws2.Range("G1:G" & Rmax))
    BA.Value = Application.WorksheetFunction.SumIf _
       (ws3.Range("C1:C" & Rmax), ws1.Range("D8").Value, ws3.Range("E1:E" & Rmax))
    ws1.Range("E8").Value = AB - BA

こういうイメージで行ないたいのですが、
「AB」「BA」の修飾氏が不正とけられてしまいます。

SUMIF同士は足し算できないのでしょうか?

【50876】Re:複数のSUMIFを更に足す
発言  Jaka  - 07/8/21(火) 13:18 -

引用なし
パスワード
   >    Rmax = ws3.Range("C65537").End(xlUp).Row
              ↑
            2007以外エラーになります。

>    Dim AB, BA As Long
      ↑2つは、変数です。内1つは数値型。
       因みにABは、Variant型です。

    ↓数値型変数にValueプロパティは、要らない。
     variant型でエラーが出ないのは、Rangeとして認識しちゃってる?      
>    AB.Value = Application.WorksheetFunction.SumIf _
>       (ws2.Range("D1:D" & Rmax), ws1.Range("D8").Value, ws2.Range("G1:G" & Rmax))
>    BA.Value = Application.WorksheetFunction.SumIf _
>       (ws3.Range("C1:C" & Rmax), ws1.Range("D8").Value, ws3.Range("E1:E" & Rmax))
>    ws1.Range("E8").Value = AB - BA

【50877】Re:複数のSUMIFを更に足す
質問  とむ  - 07/8/21(火) 15:39 -

引用なし
パスワード
   >Jakaさん
ご返答ありがとうございます。
それに基づき修正したのですが、

    Dim ws1 As Worksheet, ws2 As Worksheet, ws3 As Worksheet, Rmax As Long
    Set ws1 = ThisWorkbook.Worksheets("Sheet1")
    Set ws2 = ThisWorkbook.Worksheets("Sheet2")
    Set ws3 = ThisWorkbook.Worksheets("Sheet3")
    Rmax = ws2.Range("C65536").End(xlUp).Row
    Rmax = ws3.Range("C65536").End(xlUp).Row

    Dim AB As Long, BA As Long
    AB = Application.WorksheetFunction.SumIf _
       (ws2.Range("C1:C" & Rmax), ws1.Range("D8").Value, ws2.Range("E1:E" & Rmax))
    BA = Application.WorksheetFunction.SumIf _
       (ws3.Range("C1:C" & Rmax), ws1.Range("D8").Value, ws3.Range("F1:F" & Rmax))
    If AB > BA Then
    ws1.Range("E8").Value = AB - BA
    ElseIf AB < BA Then
    ws1.Range("E8").Value = BA - AB
    End If

これだとBAの値を引っ張ってくるのですが、
ABとの足し算だったり引き算だったりをしてくれません。
何か間違っていますか?

【50878】Re:複数のSUMIFを更に足す
発言  Jaka  - 07/8/21(火) 15:44 -

引用なし
パスワード
   変数ABにも値が入っているのでしょうか?
要するに変数AB、BAに値が入っているけど、意図した計算にならない。
ということなのでしょうか?
だとすれば、変数AB、BAに入っている値が正しいかどうかを調べれば解ると思いますが....。

それと、
>    Rmax = ws2.Range("C65536").End(xlUp).Row
>    Rmax = ws3.Range("C65536").End(xlUp).Row
こんな風に続けちゃったら、上のws2の結果はws3の結果を上書きしちゃうから、ws2の結果は反映されないですよ。

【50879】Re:複数のSUMIFを更に足す
回答  とむ  - 07/8/21(火) 16:01 -

引用なし
パスワード
   >Jakaさん
>変数ABにも値が入っているのでしょうか?
>要するに変数AB、BAに値が入っているけど、意図した計算にならない。
>ということなのでしょうか?
>だとすれば、変数AB、BAに入っている値が正しいかどうかを調べれば解ると思いますが....。

ws1(Sheet1)に入っている名称をws2(Sheet2)から探し出し、
また、ws1(Sheet1)に入っている名称をws3(Sheet3)からも探し出し、
その両方の値を合算したものをws1(Sheet1)に反映させたいのです。

ABの値は
 Application.WorksheetFunction.SumIf _
(ws2.Range("C1:C" & Rmax), ws1.Range("D8").Value, ws2.Range("E1:E" & Rmax))
また、BAの値は
 Application.WorksheetFunction.SumIf _
 (ws3.Range("C1:C" & Rmax), ws1.Range("D162").Value, ws3.Range("F1:F" & Rmax))
です。
AB>BAの場合はAB-BA、BA>ABの場合はBA-ABという式にしたいのですが、
思うような回答が得られません。

>それと、
>>    Rmax = ws2.Range("C65536").End(xlUp).Row
>>    Rmax = ws3.Range("C65536").End(xlUp).Row
>こんな風に続けちゃったら、上のws2の結果はws3の結果を上書きしちゃうから、ws2の結果は反映されないですよ。

あぁ、そうなのですね。
こちらは特に要していないので思い切って削除してしまいます。

【50880】Re:複数のSUMIFを更に足す
発言  Jaka  - 07/8/21(火) 16:48 -

引用なし
パスワード
   ▼とむ さん:
>AB>BAの場合はAB-BA、BA>ABの場合はBA-ABという式にしたいのですが、
>思うような回答が得られません。
ですから、AB、BAに入っている結果が正しいかどうかを確認してください。
コードとしてはおかしいところが見当たりません。
もしかして少数計算?
PCの小数計算はあまり当てになりません。

【50881】Re:複数のSUMIFを更に足す
お礼  とむ  - 07/8/21(火) 17:12 -

引用なし
パスワード
   >Jakaさん

>コードとしてはおかしいところが見当たりません。
コードとしては大丈夫なのですね。
しかし、数値自体もあっているし、、、

>もしかして少数計算?
いえ、小数計算ではありません。整数です。

何故でしょうね。
でもコードが合っているとのことですので、
これで一旦クローズさせて頂きます。
本当にありがとうございました。

【50883】Re:複数のSUMIFを更に足す
発言  Jaka  - 07/8/21(火) 17:37 -

引用なし
パスワード
   取りあえずF8キーを押してステップ実行してみるのも手かと。

5423 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free