下の表(ソースは「なんちゃって個人情報」)では誕生日がテキストの数字となっています。
この最大値を取得しようとしてワークシート関数のMax()を使うと、0が返ってくるという残念な結果に、、
なので、テキストとして入力されている数字の最大値を取得する関数です。
関数サンプル
Sub 誕生日の最大値を取得()
Dim max誕生日 As Variant
On Error GoTo AbEnd
max誕生日 = MaxInNumericString(Range("D2:D101"))
MsgBox max誕生日
Exit Sub
AbEnd:
MsgBox Err.Description
End Sub
'========================================================================='
Function MaxInNumericString( _
ByVal pRange As Range _
) As Variant
'' 文字列として扱われている数値データの中で最大の値を取得する
'========================================================================='
Dim arrData As Variant
Dim i As Integer
Dim j As Integer
Dim MaxString As Variant
Dim MaxValue As Single
Dim Buff As Variant
''初期化
MaxInNumericString = False
''Rangeを2次元の配列に代入
arrData = pRange
''最大値を取得
For i = LBound(arrData, 1) To UBound(arrData, 1)
For j = LBound(arrData, 2) To UBound(arrData, 2)
Buff = arrData(i, j).value
''数字データ以外の場合は抜ける
If IsNumeric(Buff) = False Then
Err.Raise _
800, _
"MaxInNumericString", _
"データに数字以外の文字列が含まれています"
Exit Function
End If
If i = 1 And j = 1 Then
MaxString = Buff
MaxValue = CSng(Buff)
ElseIf MaxValue < CSng(Buff) Then
MaxString = Buff
MaxValue = CSng(Buff)
End If
Next j
Next i
MaxInNumericString = MaxString
End Function
0 件のコメント:
コメントを投稿