Как посчитать сумму цифр числа в excel


Пусть имеется число 456258 и необходимо найти сумму всех его цифр, т.е. 4+5+6+2+5+8. Сделать это можно

одной формулой.

Пусть ячейка

А1

содержит исходное число

456258

.

Просуммировать все цифры числа можно одной, но достаточно сложной формулой

=СУММПРОИЗВ(—ПСТР(A1;СТРОКА(ДВССЫЛ(«A1:A»&ДЛСТР(A1)));1))

Разберем подробнее (см.

файл примера

).

  • функция

    ДВССЫЛ()

    возвращает

    массив чисел

    из диапазона

    А1:А6

    {456258:0:0:0:0:0}. Ссылка на ячейку

    А6

    сформирована текстовой строкой «A1:A» и функцией

    ДЛСТР()

    , которая вычислила количество цифр в числе (6). Сами элементы массива не важны, главное – его размерность – 6, т.е. вместо

    ДВССЫЛ(«A1:A»&ДЛСТР(A1))

    можно было написать формулу

    ДВССЫЛ(«Z1:Z»&ДЛСТР(A1))

    .

  • функция

    СТРОКА()

    формирует

    массив последовательных чисел

    {1:2:3:4:5:6} из номеров строк полученного на предыдущем шаге массива, начиная с 1.

  • функция

    ПСТР()

    извлекает последовательно по одному текстовому символу из исходного числа и возвращает массив {«4″:»5″:»6″:»2″:»5″:»8»}.
  • двойное отрицание (—)

    преобразует текст в числовую форму

    и возвращает массив {4:5:6:2:5:8}.

  • функция

    СУММПРОИЗВ()

    суммирует элементы массива.

Промежуточные результаты вычисления можно увидеть, выделив в

Строке формул

интересующую часть формулы, например

«A1:A»&ДЛСТР(A1)

, а затем нажав

клавишу

F9.

Эта заметка продолжает цикл материалов по использованию формул массива. Если ранее вы не сталкивались с формулами массива, рекомендую начать с Введение в формулы массива и Некоторые примеры использования формул массива. Основное достоинство формул массивов состоит в том, что они позволяют выполнять очень широкий круг вычислений, который другими способами выполнить нельзя. К сожалению, формулы массивов – это наиболее сложное и непонятное средство Excel.

В настоящей заметке использованы материалы книги Джона Уокенбаха MS Excel 2007. Библия пользователя. – М.: Издательский дом «Вильямс», 2008. – 816 с.

Скачать заметку в формате Word, примеры в формате Excel

Сумма цифр целого числа

Приведенная ниже формула массива возвращает сумму цифр, составляющих положительное целое число, которое содержится в ячейке А1. Например, если в этой ячейке хранится число 409, то формула вернет число 13 (сумму цифр 4, 0 и 9): {=СУММ(ПСТР(A1;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1)));1)*1)}

Чтобы понять, как работает эта формула, рассмотрим последовательно ее работу.

1. ДЛСТР(A1) возвращает количество цифр числа, находящегося в ячейке А1. В нашем примере, 3.

2. Функция {=СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1)))} возвращает массив целых чисел, который начинается с единицы и заканчивается числом, равным количеству цифр, которые составляют значение, хранящееся в ячейке А1. В нашем примере СТРОКА создаст следующий виртуальный массив: {1;2;3}

3. Функция ПСТР возвращает часть текстовой строки. Функция ПСТР имеет три аргумента: (1) текст; в нашем примере содержимое ячейки А1, 409;
(2) начальная позиция; в нашем примере – массив {1;2;3}, то есть в первом заходе будет использовано значение 1, во втором – 2, в третьем – 3;
(3) количество извлекаемых символов; в нашем примере, 1.
В нашем примере функция ПСТР выглядит так: {=ПСТР(409;{1;2;3};1)}. Функция создаст массив из трех элементов: {4;0;9}.

4. К сожалению, функция ПСТР возвращает массив строк, которые содержат текст. Чтобы преобразовать строку, которая выглядит как число, в соответствующее число, следует умножить ее на единицу (что и было сделано). Можно также воспользоваться функцией ЗНАЧЕН, которая преобразует текстовую строку, содержащую число, в соответствующее значение: {=СУММ(ЗНАЧЕН(ПСТР(A1;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1)));1)))}

5. И, наконец, функция СУММ суммирует элементы массива {4;0;9}: {=СУММ({4;0;9})}. Эта формула возвращает значение 13.

Вы также можете «встать» в ячейку В1 и пройти по меню Формулы → Зависимости формул → Вычислить формулу. В открывшемся окне, нажимая последовательно на «Вычислить», вы будете видеть, как работает эта формула шаг за шагом:

Заметьте, что формула не работает с отрицательными числами, поскольку знак «минус» не является числом. В следующей формуле эта проблема решается с помощью функции ABS, которая возвращает модуль аргумента:
{=СУММ(ЗНАЧЕН(ПСТР(ABS(E6);СТРОКА(ДВССЫЛ("1:"&ДЛСТР(ABS(E6))));1)))}

In Excel, we can easily add the digits of a number. Usually, calculations that involve multiple values can be dealt with the help of array formulas, but here, we are going to find the sum of the digits of a number using non-array formulas. As an example, say we have a number 238 in one of the cells of the Excel sheet and we want to find the sum of the digits of this number. It would essentially be 2 + 3 + 8 which equals 13. Let us see how to do that without using an array formula. But before jumping on to the non-array formula method of finding the sum of the digits of a number, let us first see what is an array formula.

Array Formula

An array formula is nothing but a method that enables one to do multiple calculations at once. It can also do a calculation more than once in a specific cell range. Look at the example below. Say we have to find the product of quantities and cost as shown in the excel sheet below. If we do this using an array formula, then we can get the result much faster. 

Example

We can use the multi-cell array formula for multiplying the quantity and cost column.

Multi-cell array formula

Here, we have to use a single formula and we will get results of all the rows. To calculate all the values of the Amount table, we will first select the area where we want to see the end result. Press F2 after selecting the required area so that you come back on to the first cell of the selected area. 

Select-the-required-area-and-press-F2

Then, write the array formula in the first cell where the cursor is placed. The formula is simply: =B2:B4*C2:C4

Apply-the-formula

Now, don’t just press enter because then it will print the result in only one cell. These formulas are CSE, meaning they will execute properly only when you click CTRL + SHIFT + ENTER. See the result. 

Result

Note that Excel automatically adds curly braces around the formula. This is to indicate that it is an array formula. 

Non-array Formula 

There are two non-array formulas that we can use to find the sum of the digits of a number. These are:

  1. Sum and Index Formula
  2. Sumproduct and Indirect Formula

Let us look at them one by one. 

1. Sum and Index formula: Here, we have a number 243 and we have to find the sum of its digits. We will go to the cell in which we want to get the sum and write the following formula:

=SUM(INDEX(1*(MID(A1,ROW(INDIRECT(“1:”&LEN(A1))),1)),,))

This formula uses various functions. Let us understand this formula a bit more:

  • The INDEX function will return the value at a given location. In this case, it would be the value of these numbers. 
  • The MID function will return a sequence of values from the middle of the string. In this case, the string is nothing but the number itself.
  • The ROW function will simply return the number for the referenced. Here the row number will be A1. 
  • The INDIRECT function will return a valid cell reference from this string of numbers. 
  • The LEN function will return the number of characters of the string. In this case, it would be 3. 

Sum and Index formula

Sum-and-Index-formula

Just press Enter and you will get the result. 

Final-result

2. Sumproduct and Indirect Formula: Again we have a number 243 and we have to find the sum of its digits. We will go to the cell in which we want to get the sum and write the following formula:

=SUMPRODUCT(MID(A1,ROW(INDIRECT(“1:” & LEN(A1))),1)*1)

Sumproduct-and-indirect-formula

There is one more formula under this category that works the same:

=SUMPRODUCT(MID(A1,ROW(OFFSET($A$1,,,LEN(A1))),1)+0)

It is shown here:

Sumproduct-and-offset-formula

Both these formulae give the same output:

Final-result

A few more functions are used in this formula. These are:

  • The OFFSET function will return a range specifying a certain number of rows and columns to address a cell. 
  • The SUMPRODUCT function first multiplies a range of cells and then returns the sum of the product. 

Как подсчитать сумму цифр числа. Например 7549 =7+5+4+9 = 2

mesnik

Дата: Пятница, 25.03.2016, 21:53 |
Сообщение № 1

Группа: Пользователи

Ранг: Новичок

Сообщений: 11


Репутация:

0

±

Замечаний:
0% ±


Excel 2007

Помогите, пожалуйста.
Надо подсчитать сумму цифр числа. Например 7549 =7+5+4+9 = 25 =2+5 = 7.
Нужна формула.
Спасибо.

 

Ответить

abtextime

Дата: Пятница, 25.03.2016, 22:07 |
Сообщение № 2

Группа: Проверенные

Ранг: Ветеран

Сообщений: 828


Репутация:

117

±

Замечаний:
0% ±


Excel 2010

Если нет ограничений по длине, то формулами неудобно, UDF — простенькая, через Mid().

Если ограничение хоть какое-то есть, то что-то типа

Код

=пстр(A1;1;1)+пстр(A1;2;1)+…+пстр(A1;20;1)+0

Сорри, ответ ограничен отсутствием Excel на домашнем компе

Сообщение отредактировал abtextimeПятница, 25.03.2016, 22:09

 

Ответить

mesnik

Дата: Пятница, 25.03.2016, 22:47 |
Сообщение № 3

Группа: Пользователи

Ранг: Новичок

Сообщений: 11


Репутация:

0

±

Замечаний:
0% ±


Excel 2007

Pelena,
Спасибо.
Очень помогли. Но есть одна загвоздка .
По формуле получается:
1836 = 9 -хорошо
1837 =10 -плохо, надо чтоб ещё 1+0=1

 

Ответить

mesnik

Дата: Пятница, 25.03.2016, 22:49 |
Сообщение № 4

Группа: Пользователи

Ранг: Новичок

Сообщений: 11


Репутация:

0

±

Замечаний:
0% ±


Excel 2007

abtextime,
Спасибо.
Очень помогли. Но есть одна загвоздка .
По формуле получается:
1836 = 9 -хорошо
1837 =10 -плохо, надо чтоб ещё 1+0=1

 

Ответить

Pelena

Дата: Пятница, 25.03.2016, 22:50 |
Сообщение № 5

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

Да я уже поняла, поэтому удалила свой пост, но Вы успели прочитать :)


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

_Boroda_

Дата: Пятница, 25.03.2016, 22:52 |
Сообщение № 6

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

Сумма цифр равна остатку от деления на 9

-1 и +1 — это для случая, когда число само делится на 9 и остаток, следовательно, равен нулю


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

mesnik

Дата: Пятница, 25.03.2016, 22:56 |
Сообщение № 7

Группа: Пользователи

Ранг: Новичок

Сообщений: 11


Репутация:

0

±

Замечаний:
0% ±


Excel 2007

_Boroda_,
КЛАС. hands
Ну просто здорово, а главное кратко!
СПАСИБО! hands

 

Ответить

abtextime

Дата: Пятница, 25.03.2016, 22:58 |
Сообщение № 8

Группа: Проверенные

Ранг: Ветеран

Сообщений: 828


Репутация:

117

±

Замечаний:
0% ±


Excel 2010

_Boroda_ крут! Даже я со своим мехматом забыл, вылетело из головы ((

 

Ответить

Pelena

Дата: Пятница, 25.03.2016, 23:20 |
Сообщение № 9

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

Саша, нет слов, это просто высший пилотаж! Браво!


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

vikttur

Дата: Суббота, 26.03.2016, 01:14 |
Сообщение № 10

Группа: Друзья

Ранг: Участник клуба

Сообщений: 2941

Сообщение отредактировал viktturСуббота, 26.03.2016, 01:29

 

Ответить

_Boroda_

Дата: Суббота, 26.03.2016, 01:39 |
Сообщение № 11

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

Это еще раз подтверждает, что все новое — это хорошо забытое старое.


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

abtextime

Дата: Суббота, 26.03.2016, 02:29 |
Сообщение № 12

Группа: Проверенные

Ранг: Ветеран

Сообщений: 828


Репутация:

117

±

Замечаний:
0% ±


Excel 2010

Меня только смущает в задании, что это называется «сумма цифр числа». Разве это сумма цифр? Это уже что-то иное, нет? Как ЭТО правильно называется?

 

Ответить

AlexM

Дата: Суббота, 26.03.2016, 20:22 |
Сообщение № 13

Группа: Друзья

Ранг: Участник клуба

Сообщений: 4257


Репутация:

1046

±

Замечаний:
0% ±


Excel 2003

vikttur, Я делал Excel вариант этого фокуса.

К сообщению приложен файл:

5132189.xls
(33.0 Kb)



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.

 

Ответить

StoTisteg

Дата: Суббота, 26.03.2016, 20:32 |
Сообщение № 14

Группа: Авторы

Ранг: Старожил

Сообщений: 1161


Репутация:

103

±

Замечаний:
0% ±


Excel 2010

Как ЭТО правильно называется?

Нумерологическая сумма, ЕМНИП.


Интуитивно понятный код — это когда интуитивно понятно, что это код.

 

Ответить

abtextime

Дата: Суббота, 26.03.2016, 22:11 |
Сообщение № 15

Группа: Проверенные

Ранг: Ветеран

Сообщений: 828


Репутация:

117

±

Замечаний:
0% ±


Excel 2010

StoTisteq, а вот яндекс ничего про нумерологическую сумму не знает. Ну да ладно, не суть …

 

Ответить

StoTisteg

Дата: Суббота, 26.03.2016, 22:49 |
Сообщение № 16

Группа: Авторы

Ранг: Старожил

Сообщений: 1161


Репутация:

103

±

Замечаний:
0% ±


Excel 2010

[offtop]Ну значит моя б/у память мне всё же с кем-то изменяет :)


Интуитивно понятный код — это когда интуитивно понятно, что это код.

 

Ответить

андрей804

Дата: Вторник, 21.04.2020, 22:27 |
Сообщение № 17

Группа: Пользователи

Ранг: Новичок

Сообщений: 26


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

Сумма цифр равна остатку от деления на 9

=ОСТАТ(A1-1;9)+1

-1 и +1 — это для случая, когда число само делится на 9 и остаток, следовательно, равен нулю

CENSORED Так все просто :o hands


ищу, уже почти нашел

Сообщение отредактировал PelenaСреда, 22.04.2020, 11:41

 

Ответить

_Boroda_

Дата: Вторник, 21.04.2020, 23:01 |
Сообщение № 18

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

Можно и поизвращаться. Вариантов масса, например, так (неоптимизировано, просто что первое в голову пришло)

Код

=СУММПРОИЗВ(—ПСТР(СУММПРОИЗВ(—ПСТР(СУММПРОИЗВ(—ПСТР(A1;СТРОКА(A$1:ИНДЕКС(A:A;ДЛСТР(A1)));1))&0;{1:2};1))&0;{1:2};1))

По идее до 99 999 999 999 (и с некоторыми бОльшими числами) должна работать.


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

bmv98rus

Дата: Вторник, 21.04.2020, 23:34 |
Сообщение № 19

Группа: Друзья

Ранг: Участник клуба

Сообщений: 4009


Репутация:

760

±

Замечаний:
0% ±


Excel 2013/2016

_Boroda_, Александр, а в сообщении №17 ничего не напрягает???


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rusСреда, 22.04.2020, 11:26

 

Ответить

_Boroda_

Дата: Среда, 22.04.2020, 00:19 |
Сообщение № 20

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

Не-а. Мне без разницы, как это называется


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

Если у вас есть ячейка, содержащая значение, и теперь вы хотите сложить все цифры ячейки. Например, если у вас есть значение 12345 в ячейке, вы хотите выполнить следующий расчет: 1 + 2 + 3 + 4 + 5 и получить значение 15. Есть ли какие-нибудь хорошие способы суммировать все цифры числа в Excel?


Суммируйте все цифры числа в ячейке с формулами

Следующие формулы помогут быстро вычислить сумму ячейки, не добавляя цифры одну за другой вручную.

1. Введите или скопируйте любую из следующих формул в пустую ячейку, чтобы вывести результат:

=SUMPRODUCT(1*MID(A2,ROW(INDIRECT(«1:»&LEN(A2))),1))
=SUM(INDEX(1*(MID(A2,ROW(INDIRECT(«1:»&LEN(A2))),1)),,))

2, Затем нажмите Enter Нажмите клавишу, чтобы вернуть результат, и выберите ячейку C2, затем перетащите дескриптор заполнения в диапазон, который вы хотите применить к этой формуле, и вы получите суммирование цифр каждого номера ячейки, Смотрите скриншот:

Заметки:

  • В приведенных выше формулах A2 — это ячейка, содержащая число, цифры которого вы хотите просуммировать.
  • Если в числе есть знак минуса или десятичная точка, формулы возвращают # ЗНАЧ! ошибка.

Суммируйте все цифры числа в ячейке с помощью функции, определяемой пользователем

Чтобы сложить все цифры номера ячейки, вам также может помочь следующий код VBA.

1. Удерживайте ALT + F11 ключи, и он открывает Окно Microsoft Visual Basic для приложений.

2. Нажмите Вставить > Модулии вставьте следующий код в Окно модуля.

Код VBA: суммировать все цифры номера ячейки

 Function SumDigits(Number As String) As Integer
'Updateby Extendoffice
Dim x As Integer, C As String
For x = 1 To Len(Number)
C = Mid(Number, x, 1)
If IsNumeric(C) Then SumDigits = SumDigits + C
Next
End Function

3. Затем сохраните и закройте этот код, вернитесь на рабочий лист и введите эту формулу = SumDigits (A2) в пустую ячейку, затем перетащите дескриптор заполнения вниз к ячейкам, которые вы хотите содержать эту формулу, вы получите следующий результат:


Суммируйте все цифры числа в ячейке с помощью простой функции

Здесь я также могу поговорить о полезном инструменте — Kutools for Excel, С его Суммировать числа в ячейке функция, вы можете быстро сложить все цифры в числе.

Примечание:Чтобы применить это Суммировать числа в ячейке, во-первых, вы должны скачать Kutools for Excel, а затем быстро и легко примените эту функцию.

После установки Kutools for Excel, пожалуйста, сделайте так:

1. Щелкните пустую ячейку, в которую вы хотите вывести результат.

2. Затем нажмите Кутулс > Формула Помощник > Формула Помощник, см. снимок экрана:

3. В Помощник по формулам диалоговом окне выполните следующие операции:

  • Выберите Математики из файла Формула Тип раскрывающийся список;
  • Затем выберите Суммировать числа в ячейке из Выберите изула список;
  • В правой Ввод аргументов раздел, выберите ячейку, в которой вы хотите суммировать цифры.

4. Затем нажмите Ok и перетащите маркер заполнения к ячейкам, в которых вы хотите просуммировать цифры в ячейках. И все цифры в каждой ячейке были добавлены вместе, см. Снимок экрана:

Скачать и бесплатную пробную версию Kutools for Excel Сейчас !


Больше относительных статей:

  • Сумма диагонали диапазона в Excel
  • Когда вы выполняете арифметические вычисления, вам может потребоваться суммировать числа в таблице по диагонали. Фактически, вы также можете суммировать диагональные числа в Excel, что не требует суммирования чисел одно за другим. Если вы хотите узнать больше об этом вопросе, прочтите следующую статью.
  • Объедините повторяющиеся строки и просуммируйте значения
  • В Excel , вы всегда можете столкнуться с этой проблемой, если у вас есть диапазон данных, содержащий несколько повторяющихся записей, и теперь вы хотите объединить повторяющиеся данные и суммировать соответствующие значения в другом столбце, как показано на следующих снимках экрана. Как бы вы могли решить эту проблему?
  • Сумма на основе критериев столбца и строки
  • У меня есть диапазон данных, который содержит заголовки строк и столбцов, теперь я хочу взять сумму ячеек, которые соответствуют критериям заголовков столбцов и строк. Например, для суммирования ячеек критерием столбца является Том, а критерием строки — февраль, как показано на следующем снимке экрана. В этой статье я расскажу о некоторых полезных формулах для ее решения.
  • Суммировать числа от 1 до N в Excel
  • Для большинства пользователей Excel иногда необходимо удалить первые n символов из начала текстовых строк или удалить последние x символов из конца текстовых строк, как показано ниже. В этой статье я расскажу о некоторых полезных приемах для быстрого и простого решения этой задачи в Excel.

Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

 

Есть число, например:  
54901    
Нужна формула, которая считает сумму цифр его соствляющих, т.е.: 5+4+9+0+1=19, а затем сумму цифр получившейся суммы, т.е.: 1+9=10 и так далее: 1+0=1, до тех пор, пока после знака «равно» не получится однозначное число.  
Заранее спасибо.

 

Private Function Summa_Znach(x As String)  
 Dim i As Integer  
 Dim j As Integer  
 Dim tSum As Variant  
 If Len(x) > 1 Then  
   tSum = x  
   Do While Len(tSum) > 1  
     tSum = 0  
     For i = 1 To Len(x)  
       tSum = tSum + Val(Mid(x, i, 1))  
     Next i  
     If Len(tSum) > 1 Then  
       x = tSum  
     End If  
   Loop  
   Summa_Znach = tSum  
 Else  
   Summa_Znach = Val(x)  
 End If  
End Function

 

drony

Пользователь

Сообщений: 280
Регистрация: 01.01.1970

Да формулой одной не обойтись, так, что без VBA никуда…

 

ну почему же, а если вот так  
=ЗНАЧЕН(ЛЕВСИМВ(ЗНАЧЕН(ЛЕВСИМВ(ЗНАЧЕН(ЛЕВСИМВ(A1;1))+ЗНАЧЕН(ПСТР(ЛЕВСИМВ(A1;2);2;1))+ЗНАЧЕН(ПСТР(ЛЕВСИМВ(A1;3);3;1))+ЗНАЧЕН(ПСТР(ЛЕВСИМВ(A1;4);4;1))+ЗНАЧЕН(ПСТР(ЛЕВСИМВ(A1;5);5;1));1))+ЗНАЧЕН(ПРАВСИМВ(ЗНАЧЕН(ЛЕВСИМВ(A1;1))+ЗНАЧЕН(ПСТР(ЛЕВСИМВ(A1;2);2;1))+ЗНАЧЕН(ПСТР(ЛЕВСИМВ(A1;3);3;1))+ЗНАЧЕН(ПСТР(ЛЕВСИМВ(A1;4);4;1))+ЗНАЧЕН(ПСТР(ЛЕВСИМВ(A1;5);5;1));1));1))+ЗНАЧЕН(ПРАВСИМВ(ЗНАЧЕН(ЛЕВСИМВ(ЗНАЧЕН(ЛЕВСИМВ(A1;1))+ЗНАЧЕН(ПСТР(ЛЕВСИМВ(A1;2);2;1))+ЗНАЧЕН(ПСТР(ЛЕВСИМВ(A1;3);3;1))+ЗНАЧЕН(ПСТР(ЛЕВСИМВ(A1;4);4;1))+ЗНАЧЕН(ПСТР(ЛЕВСИМВ(A1;5);5;1));1))+ЗНАЧЕН(ПРАВСИМВ(ЗНАЧЕН(ЛЕВСИМВ(A1;1))+ЗНАЧЕН(ПСТР(ЛЕВСИМВ(A1;2);2;1))+ЗНАЧЕН(ПСТР(ЛЕВСИМВ(A1;3);3;1))+ЗНАЧЕН(ПСТР(ЛЕВСИМВ(A1;4);4;1))+ЗНАЧЕН(ПСТР(ЛЕВСИМВ(A1;5);5;1));1));1))

 

andy1618

Пользователь

Сообщений: 128
Регистрация: 01.01.1970

Вот ещё VBA-вариант — с рекурсией:  
==  
‘ Sum of Digits  
Function SDig(srcString As String) As Integer  
Dim i As Integer  
   SDig = 0  
   For i = 1 To Len(srcString)  
       SDig = SDig + Val(Mid(srcString, i, 1))  
   Next  
   If Len(CStr(SDig)) > 1 Then SDig = SDig(CStr(SDig))  
End Function  
==

 

drony

Пользователь

Сообщений: 280
Регистрация: 01.01.1970

Артем, формула не рабочая !  
С числом 54901 она справилась ХОРОШО !  
НО !  
Стоит подставить к примеру 25896, то она выдает ответ 6, хотя калькуляторным методом я получаю 3 !!!  

  И большой минус в том, что ограничено как минимальное количество цифр, иак и максимальное, а раздувать формулу еще  — это моразм.  

  Так, что VBA сдесь РУЛИТ !

 
 

Перемудрили вы, ребята.  
Искомое число циклически меняется от 1 до 9 и равно остатку от деления числа на девять, за исключением случаев, когда число кратно 9.  
Формула достаточно проста:  
=ЕСЛИ(ОСТАТ(A1;9)=0;9;ОСТАТ(A1;9))

 

andy1618

Пользователь

Сообщений: 128
Регистрация: 01.01.1970

Да, действительно всё просто оказалось. Позор-то какой! :)))  

  Кстати, формулу можно немного упростить:  
=ОСТАТ(A1-1;9)+1  
А если ещё приделать проверку на 0, то:  
=ЕСЛИ(A1<=0;0;ОСТАТ(A1-1;9)+1)  
или, по-хулигански:  
=(A1>0)*(ОСТАТ(A1-1;9)+1)  

  Кстати, на этом свойстве (что если из числа вычесть сумму его цифр, то оно будет делиться на 9) основан известный интернет-прикол с магическим квадратом:  

http://angel2004.biz/mk.htm

 

Да уж, хорошо что предупредили, а то у неподготовленного челове крыша съехать ожет. Вот же паразиты с

http://angel2004.biz/mk.htm

. :-)

 

Под впечатлением всей этой нумерологии забацал эксель прикол. Зацените.

 

andy1618

Пользователь

Сообщений: 128
Регистрация: 01.01.1970

Работает, но не сходится (где-то не там значки расставляются). Плюс спеллчекером бы неплохо пройтись :)

 

Что за ерунда, действительно врет. У меня всё отлично работает — а ничего не менял. Странно…  
Спелчекера не надо — это оригинальный дизайнерский замысел :-)

 

Rusl

Пользователь

Сообщений: 7
Регистрация: 01.01.1970

Как быть если конечное число должно быть в диапазон от 1 до 12 включительно?  

  По формуле    
=ЕСЛИ(ОСТАТ(A1;9)=0;9;ОСТАТ(A1;9))  

  из 29 получим 2, а нужно 11. Как видоизменить формулу, пробовал сам, что-то не так выходит.

 

tarasso

Пользователь

Сообщений: 123
Регистрация: 29.12.2012

Здравствуйте! Нравятся такие задачки, код можно еще так записать:  
Function SumNums_2(stroka As String)  
Dim b&, i&  
If Len(stroka) <= 1 Then SumNums_2 = stroka: Exit Function  
While Len(stroka) > 1  
For i = 1 To Len(stroka)  
b = Val(b) + Val(Mid(stroka, i, 1))  
Next i  
stroka = b: b = 0  
Wend  
SumNums_2 = stroka  
End Function

 

VLad777

Пользователь

Сообщений: 5018
Регистрация: 22.12.2012

вариант  
чтоб формула не была громоздкой  
создадим имя «формула» с формулой  
СУММ(ЕСЛИ(ЕОШИБКА(—ПСТР(A1;СТРОКА(1:10);1));0;(—ПСТР(A1;СТРОКА(1:10);1))))  
тогда в ячейке  
=ЕСЛИ(формула<=12;формула;СУММ(ЕСЛИ(ЕОШИБКА(—ПСТР(формула;СТРОКА(1:5);1));0;(—ПСТР(формула;СТРОКА(1:5);1)))))  

  в первой формуле СТРОКА(1:10) это максимальное количество цифр в числе которое будет считаться. если нужно максимум пятизначное число то меняем на СТРОКА(1:5)и СТРОКА(1:5)меняем на СТРОКА(1:2)

 

VLad777

Пользователь

Сообщений: 5018
Регистрация: 22.12.2012

забыл указать в ячейке формула вводится как формула массива.

 

KuklP

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

Public Function SumDigits&(n&)  
   Dim s$, a  
   While Len(CStr(n)) > 1  
       s = Replace(String(Len(CStr(n)), «@»), «@», «@ «)  
       n = Evaluate(Join(Split(Format(n, Mid$(s, 1, Len(CStr(n)) * 2 — 1))), «+»))  
   Wend  
   SumDigits& = n  
End Function

Я сам — дурнее всякого примера! …

 

Серж, это круто!!!  
Однако, можно без join(split:  

  Public Function SumDigits&(ByVal n&)  
While Len(CStr(n)) > 1  
n = Evaluate(Format(n, Replace(Space(Len(CStr(n))), » «, «@+») & 0))  
Wend  
SumDigits = n  
End Function

 

KuklP

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

Отлично, Леш!

Я сам — дурнее всякого примера! …

 

MCH

Пользователь

Сообщений: 3875
Регистрация: 22.12.2012

#21

01.11.2012 08:42:47

Evaluate это конечно красиво, но очень медленно, особенно в сочетании с текстовыми функциями и преобразованием типов  

  например целочисленная арифметика работает в десятки раз быстрее (у меня получилос в 32 раза):  

  Function SumDig&(ByVal n&)  
   While n > 0  
       SumDig = SumDig + n Mod 10  
       n = n 10  
   Wend  
   If SumDig > 9 Then SumDig = SumDig(SumDig)  
End Function

Понравилась статья? Поделить с друзьями:
  • Как посчитать сумму цифр в одной ячейке excel
  • Как посчитать сумму повторяющихся значений в excel
  • Как посчитать сумму цветных ячеек в excel
  • Как посчитать сумму по цвету ячейки в excel
  • Как посчитать сумму только отфильтрованных ячеек в excel