[[20160929145426]] 『型が一致しません』(さむぷろだくと) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『型が一致しません』(さむぷろだくと)

 いつもお世話になっています。
 下記のようにコードを記述しているのですが・・・
 型が一致しませんとエラーになってしまいます。

 Sheets("仮取り込み").Range("E" & j) = WorksheetFunction.SumProduct( _
 (Sheets("仮取り込み").Range("G" & j) & "*" & Sheets("仮取り込み").Range("G" & j + 1 & ":G" & j + 20)) _
  & "*" & (Sheets("仮取り込み").Range("M" & j) & "*" & Sheets("仮取り込み").Range("M" & j + 1 & ":M" & j + 20).Value) _
  & "*" & 1)

 ご教示いただけませんでしょうか。

< 使用 Excel:Excel2007、使用 OS:Windows7 >


 ちょっとゴチャゴチャしていて、よく分りません。

 多分、根本的な間違いをしているんだろうと思います。
 ※シート上で書くのとは訳が違いますよ。

 取りあえず、シート上の数式だと、どんな数式になるのか教えてください。
 ※jが「2」のケースで作ってみてください。

(半平太) 2016/09/29(木) 15:24


 半平太さんコメありがとうございます!

 シート上では下記のようになります。

 E2=SUMPRODUCT((G2=G3:G22)*(M2=M3:M22)*1)

(さむぷろだくと) 2016/09/29(木) 15:47


 ん〜、実現したいのは、こういう事でしょうか?
    Sheets("仮取り込み").Range("E" & j) = _
        Evaluate("SumProduct((G" & j & "=G" & j + 1 & ":G" & j + 20 & ")*(M" & j & "=M" & j + 1 & ":M" & j + 20 & ")*1)")

 それとも、式を自動作成したい、という事ならば、こう?
    Sheets("仮取り込み").Range("E" & j).Formula = _
        "=SumProduct((G" & j & "=G" & j + 1 & ":G" & j + 20 & ")*(M" & j & "=M" & j + 1 & ":M" & j + 20 & ")*1)"
(???) 2016/09/29(木) 16:19

 >E2=SUMPRODUCT((G2=G3:G22)*(M2=M3:M22)*1) 
                     ↑
                               「*1」は不要です。

 こりゃ結構厄介ですね。

 むしろCountifsを使った方が楽だと思いますが、
 Sumproductと完全にイコールでもないので悩みますね。
 (空白が絡むと違ってくる。現実にはそんなケースはないでしょうが・・)

 以下一案です。

 ary1 = Evaluate("(仮取り込み!G" & j & "=仮取り込み!G" & j + 1 & ":G" & j + 20 & ")*1")
 ary2 = Evaluate("(仮取り込み!M" & j & "=仮取り込み!M" & j + 1 & ":M" & j + 20 & ")*1")
 Sheets("仮取り込み").Range("E" & j) = WorksheetFunction.SumProduct(ary1, ary2)

(半平太) 2016/09/29(木) 16:54


 ???さんありがとうございます。

 Evaluateのほうが私のやりたかった方法です!!
 助かりました!!でも教えていただいたFormulaと結果が違っていて・・・
 結果としてはFormulaのほうが正しいのです。

 その違いを教えていただけませんか?

(さむぷろだくと) 2016/09/29(木) 17:27


 半平太さん何度もありがとうございます!!

 半平太さんの式で私の期待どおりの結果ができました!!
 もう少し教えてください。
 空白とは、たとえば・・・G列の値に"  りんご"とか"りんご "といったようなものは
 =と認識しないという意味でしょうか?
(さむぷろだくと) 2016/09/29(木) 17:30

 > 空白とは、たとえば・・・G列の値に"  りんご"とか"りんご "といったようなものは
 > =と認識しないという意味でしょうか?

 Sheet2に下記2種の数式が入力してあるとすると・・・

 (1) E2セル =SUMPRODUCT((仮取り込み!G2=仮取り込み!G3:G22)*(仮取り込み!M2=仮取り込み!M3:M22))
 (2) F2セル =COUNTIFS(仮取り込み!G3:G22,仮取り込み!G2,仮取り込み!M3:M22,仮取り込み!M2)

 普通、E2とF2は同じ結果になる・・が、

 <仮取り込み1>              <Sheet2 結果図>
  行  _G_  _H_  _I_  _J_  _K_  _L_  _M_    行  _E_  _F_
   2   a                             b     2    2    2
   3   a                             b      
   4   c                             b  
   5   a                             b  

 G2とM2が空白だと、全然違った結果になる、と言うことです。

 <仮取り込み2>              <Sheet2 結果図>
  行  _G_  _H_  _I_  _J_  _K_  _L_  _M_    行  _E_  _F_
   2                                       2   17    0
   3   a                             b  
   4   c                             b  
   5   a                             b  

(半平太) 2016/09/29(木) 18:03


 半平太様おはようございます。

 ご丁寧な回答ありがとうございます。

 なるほどなるほど・・・

 これだと半平太さんの言われるようにcountifsのほうが私の望む結果になりますね!

 countifsに置き換えて検証してみます!!
(さむぷろだくと) 2016/09/30(金) 09:17

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.