値の桁の合計(Microsoft Excel)
値を含むセルがある場合は、値のすべての桁を合計する方法を考案することをお勧めします。たとえば、セルに値554が含まれている場合、5 + 5 + 4の合計(14)を決定できます。
このタスクに取り組む方法はいくつかあります。 (Excelでは常にそう思われませんか?)1つ目は、いくつかの関数に依存する数式を使用することです。
=SUMPRODUCT(--MID(A1,ROW(INDIRECT("1:" & LEN(A1))),1))
この通常の数式は、任意の整数値(セルA1内)の桁をシンプルでエレガントな方法で合計します。ただし、これが唯一の可能な式ではありません。以下は、同じ数式の配列数式(Ctrl + Shift + Enterを押して終了)バージョンです。
=SUM(1*MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))
A1の値が正の整数の場合、これらの式のいずれかが正常に機能します。数値に数字以外の文字(負の符号や小数点など)がある場合、数式は#VALUE!を返します。エラー。
ユーザー定義関数を使用して、目的の合計を返すこともできます。次のマクロは、参照されるセルの各桁をステップスルーし、合計を計算します。次に、この値がユーザーに返されます:
Function AddDigits(Number As Long) As Integer Dim i As Integer Dim Sum As Integer Dim sNumber As String sNumber = CStr(Number) For i = 1 To Len(sNumber) Sum = Sum + Mid(sNumber, i, 1) Next AddDigits = Sum End Function
この関数を使用するには、セルで= AddDigits(A1)などの数式を使用するだけです。さらにコンパクトなユーザー定義関数(同じ方法で呼び出される)は次のとおりです。
Function AddDigits(ByVal N As Long) As Integer Do While N >= 1 AddDigits = AddDigits + N Mod 10 N = Int(N / 10) Loop End Function
以前のマクロとは異なり、このバージョンでは、セルの内容を処理するために文字列に変換しません。代わりに、値の各桁をステップスルーし、最後の桁を取り除き、それを合計に追加します。
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(2424)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。