|
▼かーくん さん:
こんばんは。
>1.まず、以下の文ついてですが、これは書式のことだと理解していますが
>どのようなことを想定して入れたのでしょうか?なければないで
>良いものなのでしょうか?
> .NumberFormatLocal = "G/標準"
これは、配列数式を設定するセルの書式が文字列に設定されていたりすると
数式の計算をしてくれません。よって、数式を設定する前に書式を標準に
しておくために記述しました。書式が文字列でなければ要りませんよ!!
>
>2.次の配列数式について、カウントを求める数式だと思うのですが、
>IS関数である「ISERROR」とは、私が調べた解釈だと、
>エラー値を検索するときに使用すると
>理解していたのですが、これは、どのように解釈すればいいのでしょうか?
>また、最後の部分の「,0,1)」が、これも調べたのですが、
>ヘルプには載っていなくて分かりませんでした。
>さらに、カウント数を求めるのに、何故、「SUM」なのでしょうか?
>
> .FormulaArray = "=SUM(IF(ISERROR(FIND(1,A1:A" & _
> rw & ")),0,1))"
Find関数は、検索する文字が見つからないとエラー値を返しますから、
Iserror関数を使って分岐しています。
つまり、Iserror関数の結果がTrueで1が含まれない、Falseで含まれる
ということになりませんか?
さらにIserror関数の結果がTrueなら、0、Falseなら1の合計(SUM関数)が
件数に相当します。
新規ブックに以下のコードをコピーして実行してみて下さい。
'====================================================
Sub Macro1()
With Range("A1")
.Value = 1
.AutoFill Destination:=Range("A1:A20"), Type:=xlFillSeries
End With
Range("b1:b20").Formula = "=find(1,a1)"
Range("c1:c20").Formula = "=iserror(b1)"
Range("d1:d20").Formula = "=if(c1,0,1)"
End Sub
アクティブシートにコードの実行結果が表示されます。
B列では、
A1〜A20に対して1があるか否かを知るためにFind関数を使用しています。
結果、B列では、1が含まれないセルは、エラーになっていますよね?
C列では、
Find関数の結果をIserror関数を使用してTrueかFalseで結果を出しています。
1が含まれない(エラー値)は、True、1が含まれる(エラーではない)がFalse
という結果を出しているはずです。
D列では、
1が含まれるセルは1、含まれないセルは0
よって、このD列の合計が件数に相当します。
前回の配列数式は、この計算をしてくれる数式です。
尚、配列数式については、ここでは何回かリンクを貼りましたが、
http://pc21.nikkeibp.co.jp/special/hr/
を参考にして下さい。
わかりやすく説明されていると思います。
|
|