下の表(ソースは「なんちゃって個人情報」)では誕生日がテキストの数字となっています。
この最大値を取得しようとしてワークシート関数の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 件のコメント:
コメントを投稿