|
momoさん
詳細な検証をありがとうございます!!
自作関数もありだったのですが,できればと思い相談させてもらっていました.
自作関数やデータの扱いなど,方法を考えてみます.
ありがとうございました!
▼momo さん:
>▼tomr25 さん:
>2007で少し検証してみました。
>
>65537以上の要素数の配列 → NG
>65537以上のセルのValue → NG
>65537以上のRangeオブジェクト → OK
>
>という結果でした。
>コードで言うと
>
>Sub test()
>Dim Ans As Double
>Dim tbl(1 To 65537, 1 To 1) As Single
>Dim i As Long
>Randomize
>For i = 1 To UBound(tbl)
> tbl(i, 1) = Rnd * 100
>Next i
>On Error Resume Next
> '### 単純に配列で処理
> Ans = WorksheetFunction.Max(tbl)
> If Err.Number > 0 Then
> MsgBox "エラーです"
> Err.Clear
> Else
> MsgBox Ans
> End If
> '### セルに書きだして処理
> With Worksheets("Sheet1").Range("A1").Resize(UBound(tbl))
> .Value = tbl
> Ans = WorksheetFunction.Max(.Cells)
> End With
> If Err.Number > 0 Then
> MsgBox "エラーです"
> Err.Clear
> Else
> MsgBox Ans
> End If
>On Error GoTo 0
>End Sub
>
>こんな感じ。
>一旦セルに書きだしてRangeオブジェクトを範囲としてあげればOKですね。
>
>関数自作なら、MAXは単純にループで作れると思いますし
>MODEもDictionaryなんか使えば簡単に作れると思います。
>場合によっては最初に変数に入れる段階で答えを作れちゃいますね?
|
|