Excel VBA質問箱 IV

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

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


54589 / 76732 ←次へ | 前へ→

【26929】Re:条件一致での合計値を求める
発言  ichinose  - 05/7/23(土) 12:17 -

引用なし
パスワード
   ▼かじったばかり さん:
こんにちは。

>ありがとうございます。
>思ったとおりの結果になりました。
>今まで悩んでいたのがすっきりはれました。
>>funcstr
>の式の内容なんですがどのようになっているのでしょうか?
>よければご教授ください。
では、
>>> A     B  C
>>>1 1    ON OFF
>>>2 3    ON OFF
>>>3 6    ON OFF
>>>4 7    ON ON
>>>5 9    ON ON
>>>6 11    OFF ON
>>>7 18    OFF ON
>>>8 20    OFF ON
>>>9 25    OFF ON
>>>10 30    OFF ON
>>>11 33   ON OFF
>>>12 35   ON OFF
この例題で考えます。コードを実行すれば、上記の例題では、
Funcstrは、

「SUM(IF(($B$2:$B$12="on")*($C$2:$C$12="off")*($B$1:$B$11="on")*($C$1:$C$11="off"),$A$2:$A$12-$A$1:$A$11,0))」

となります。これは、配列数式になっています。
仮にセルI1に

「=SUM(IF(($B$2:$B$12="on")*($C$2:$C$12="off")*($B$1:$B$11="on")*($C$1:$C$11="off"),$A$2:$A$12-$A$1:$A$11,0))」

と指定し確定をEnterキーではなく、
Ctrl+Shift+Enterキーで行ってみてください。

セルI1にはコード実行時と同様の「7」と表示されます。

コードは、これと同じ事を行っています。

別の方法で分析してみましょう。

上記の例題に対して、

・セルD2〜D12を選択してください。

・選択した状態で数式バーに
 「=IF(($B$2:$B$12="on")*($C$2:$C$12="off")*($B$1:$B$11="on")*($C$1:$C$11="off"),$A$2:$A$12-$A$1:$A$11,0)」

と指定し、確定をEnterキーではなく、
Ctrl+Shift+Enterキーで行ってみてください。

   D
 1  
 2 2
 3 3
 4 0
 5 0
 6 0
 7 0
 8 0
 9 0
10 0
11 0
12 2

と表示されていれば正しく指定できたことになります。
(こうならなかったら、どこか指定方法が違っていると思ってください)
このD2からD12を合計した結果が7です。

これを一回で行ってしまうのがFuncstrに入る配列数式です。


配列は、うまく利用すると便利です。

「配列数式」で検索すればいくつも引っかかってくると思いますから、
調べてみてください。
2 hits

【26871】条件一致での合計値を求める かじったばかり 05/7/21(木) 23:52 質問
【26874】Re:条件一致での合計値を求める ichinose 05/7/22(金) 6:51 発言
【26903】Re:条件一致での合計値を求める かじったばかり 05/7/22(金) 22:33 お礼
【26929】Re:条件一致での合計値を求める ichinose 05/7/23(土) 12:17 発言
【26930】Re:条件一致での合計値を求める かじったばかり 05/7/23(土) 18:49 お礼

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