[[20140714145047]] 『Evaluate の使い方』(チサ) ページの最後に飛ぶ

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

 

『Evaluate の使い方』(チサ)

  いつもお世話になっております。それはもう感謝しております。

どうも、ダブルクウォーテーションの使い方がうまくかけてないのか、ここしばらく悩んでおります。

    Range("M3").Formula = "=SUMPRODUCT(SUBTOTAL(3,INDIRECT(""F"" & ROW(F5:F" & endRow & ")))*(F5:F" & endRow & "= ""A""))"

    これは、求める値が得られます。

    TextBox2.Text = Application.Evaluate("SUBTOTAL(3,F5:F" & endRow & ")")
   
    これも、求める値が得られます。

  問題はこれです。  

   TextBox3.Text = Application.Evaluate("SUMPRODUCT(SUBTOTAL(3,INDIRECT(""F"" & ROW(F5:F" & endRow & ")))*(F5:F" & endRow & "= ""A""))")

  これが 「実行時エラー 型が一致しません」が出てしまいます。

     どなたか、おかしいところ教えていただけないでしょうか。
   よろしくお願いいたします

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


 >おかしいところ教えていただけないでしょうか。

 構文としては、どこもおかしくないと思います。

 そこで、こんな数式で実験してみました。(F5には 777 が入っています)

     TextBox1.Text = Application.Evaluate("F5")                     →777
     TextBox1.Text = Application.Evaluate("ISERROR(F5)")                →False
     TextBox1.Text = Application.Evaluate("INDIRECT(""F5"")")           →777
     TextBox1.Text = Application.Evaluate("ISERROR(INDIRECT(""F5""))") →True

 というこは、EVLALUATE関数の引数である「数式文字列」の中で使われている関数の
 引数としてINDIRECT関数が使われると(上例ではISERROR関数の引数にINDIRECTが使われている)、
 EVALUATE()はINDIRECT()を正常に処理できないと云うことじゃないでしょうか?

 ※徹底的に調べて訳でも、権威ある人のレポートを見た訳でもないので、断言はできませんけど・・

(半平太) 2014/07/14(月) 20:25


(半平太)さん いつもいつもありがとうございます。

構文がおかしくない、といってくださり、先に進めます。

作業エリアを設けてやってみます。

こんな風に検証するのですね。勉強になりました。

本当にありがとうございました。

(チサ) 2014/07/14(月) 22:32


 >"=SUMPRODUCT(SUBTOTAL(3,INDIRECT(""F"" & ROW(F5:F" & endRow & ")))*(F5:F" & endRow & "= ""A""))"

 &が抜けてない?

 INDIRECT(""F""&" & ROW(F5:F" & endRow & ").....
(seiya) 2014/07/15(火) 02:40

(seiya)さん おはようございます。

INDIRECT(""F""&" & ROW(F5:F" & endRow & ").....
残念ながら コンパイルエラーになります。

また こちらは 求める値が得られます。

"=SUMPRODUCT(SUBTOTAL(3,INDIRECT(""F"" & ROW(F5:F" & endRow & ")))*(F5:F" & endRow & "= ""A""))"

問題は、この
TextBox3.Text = Application.Evaluate("SUMPRODUCT(SUBTOTAL(3,INDIRECT(""F"" & ROW(F5:F" & endRow & ")))*(F5:F" & endRow & "= ""A""))"
 の Evaluate とINDIRECT の相性の悪さのようです。

)

(チサ) 2014/07/15(火) 07:40


 こういう意味でしたが、Complie Errorにはなりません。
 Application.Evaluate("SUMPRODUCT(SUBTOTAL(3,INDIRECT(""F""&ROW(F5:F" & endRow & ")))*(F5:F" & endRow & "=""A""))")

 Indirectを使用しなくてもよさそうな...

(seiya ) 2014/07/15(火) 08:25


これは、オートフィルターで抽出後に、F列の値が ”A" の件数を求めようとしているものです。

これを使うと 1文でサクっと、できて便利かな・・・と思い。

(チサ) 2014/07/15(火) 09:29


 色々調べて出来なかったけど、、、
 オートフィルタでAのみ表示を追加させても同じ結果得られるんじゃない?
(稲葉) 2014/07/15(火) 09:36

(稲葉)さん  ありがとうございます。

やっぱり、できなさそうですね。

検索画面で、"A" だけでなく後10個近くあるので・・・・。
(チサ) 2014/07/15(火) 09:55


コメント返信:

[ 一覧(最新更新順) ]


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