|
こんばんは。
>無事解決できました!
>ありがとうございました!
>
>もし、お手数でなければ下の、
>> With Range("a1:a10")
>> If .Count > Evaluate("sumPRODUCT(ISNONTEXT(" & .Address & ")*1)") Then
>の命令の意味をわかるように教えてもらえますか?
.Countは、A1:A10のセルの個数ですから、10ですよね?
"sumPRODUCT(ISNONTEXT(" & .Address & ")*1)"は、
ワークシート関数を含んだ数式です。
Evaluateメソッドは、この数式を評価した結果を返します。
.Addressで、$A1:$A10というセルアドレスが取得できます。
よって、数式は、
SUMPRODUCT(ISNONTEXT($A$1:$A$10)*1)
と言う事になりますよね?
ここからは、数式を分解していきましょう!!
ISNOTEXT関数は、引数が文字列でなければTrue、文字列ならばFalseを
返します。
仮にA1には「あああ」
A2に「123」(両端の「」は除く)
A3からA10は、空白(未入力)に
入力されているとします。
ISNOTEXT($A$1:$A$10)で
{false;true;true;・・・・・true}
という配列を返します(空白をTrueとして返します)。
さらに
ISNOTEXT($A$1:$A$10)*1
によって、論理値を算術値に変換しています。
(そうしないとSumproductが足し算をしてくれないので)
この結果、上記の配列が論理値から
{0;1;1;・・・・1}
に変換されます。
Sumproduct関数は、上記の配列要素の合計を出します。
よって、9という結果を得ます。
10>9 ですので 「エラー」と表示されます。
Sumproduct関数は、便利ですからその使用方法を
HELPで確認して下さい。
以上です。
|
|