Eminには、テキストまたは数字のいずれかが含まれるセルの範囲があります。

彼は範囲内の最小の偶数を決定する方法を必要としています。 Eminは、これを数式で実行できるのか、それともユーザー定義関数が必要なのか疑問に思います。

この問題に取り組むには、いくつかの方法があります。試すことができる1つの方法は、DMIN関数を使用することです。必要なのは、データ列にヘッダー( “MyData”など)があることを確認してから、邪魔にならない場所に小さな基準フィールドを作成することです。たとえば、セルF1にヘッダー(「最小偶数」など)を配置して条件フィールドを作成し、セルF2に数式= ISEVEN(MyData)を配置することができます。セルF2は#VALUEに評価されます!エラーですが、この場合は問題ありません。次に、別のセルで次の数式を使用できます。

=DMIN(A1:A100, 1, F1:F2)

必要に応じて、配列数式を使用して最小の偶数値を計算できます。ただし、データ範囲には数値だけでなくテキストも含めることができるため、すべての配列数式が機能するとは限りません。たとえば、データ範囲に数値以外がある場合、次のエラーが生成されます。

=MIN(IF(MOD(A1:A100,2)=0,A1:A100))

エラーが発生しないようにするには、次の式をチェックする必要があります。

=MIN(IF(ISNUMBER(A1:A100),IF(NOT(MOD(A1:A100,2)=0),"",A1:A100)))

繰り返しますが、これは配列数式であるため、Shift + Ctrl + Enterを使用して入力する必要があることに注意してください。

必要に応じて、目的の値を返すユーザー定義関数を作成できます。

Function MinEven(rng As Range)

Dim rCell As Range     Dim bNotFound As Boolean

Application.Volatile     MinEven = 9.99 * 10 ^ 307     bNotFound = True     For Each rCell In rng         If Application.WorksheetFunction.IsNumber(rCell) Then             If rCell Mod 2 = 0 Then                 If rCell < MinEven Then                     MinEven = rCell                     bNotFound = False                 End If             End If         End If     Next     If bNotFound Then MinEven = CVErr(xlErrNum)

End Function

このマクロを使用するには、ワークシートのセルで次を使用するだけです。

=MinEven(A1:A100)

範囲内に偶数がない場合、関数は#Numエラーを返します。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(119)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。