値を含むセルがある場合は、値のすべての桁を合計する方法を考案することをお勧めします。たとえば、セルに値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!を返します。エラー。

このタイプの計算で可能な式はこれらだけではありません。

数式の他の例は、マイクロソフトサポート技術情報にあります。

http://support.microsoft.com/?kbid=214053

ユーザー定義関数を使用して、目的の合計を返すこともできます。次のマクロは、参照されるセルの各桁をステップスルーし、合計を計算します。次に、この値がユーザーに返されます:

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トレーニングのソースです。

このヒント(12002)は、Microsoft Excel 2007、2010、2013、および2016に適用されます。

Excelの古いメニューインターフェイスに関するこのヒントのバージョンは、 linkSumming Digits in aValueにあります。