Сумма разной валюты excel

 

TLA

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

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

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

 

Сергей

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

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

#2

10.01.2019 12:45:05

Цитата
TLA написал:
суммы всех валют из столбца

то есть 100500 йенодоллародрахмм

Лень двигатель прогресса, доказано!!!

 

TLA

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

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

#3

10.01.2019 12:46:45

Цитата
Сергей написал:
то есть 100500 йенодоллародрахмм

столбец…..внизу ячейка автосуммы с долларом, ячейка автосуммы с евро и т.д.

 

Юрий М

Модератор

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

Контакты см. в профиле

#4

10.01.2019 12:48:08

Цитата
TLA написал:
столбец…..внизу

Где этот столбец?

 

Mershik

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

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

#5

10.01.2019 12:49:33

Юрий М, ну что Вы? сказано же

Цитата
TLA написал:
.внизу

:D  

Не бойтесь совершенства. Вам его не достичь.

 

БМВ

Модератор

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

Excel 2013, 2016

#6

10.01.2019 12:49:53

Цитата
TLA написал:
В итоге должны быть суммы всех валют из столбца.

Так хотите чтоб выглядело?
123р, $34, €45,  £56, ¥67

По вопросам из тем форума, личку не читаю.

 

TLA

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

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

Пример файла загружен

Изменено: TLA10.01.2019 12:58:11

 

Сергей

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

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

#8

10.01.2019 12:57:43

Цитата
TLA написал:
файла загружен

исходя из такого примера только макрос или макрофункция

Лень двигатель прогресса, доказано!!!

 

Казанский

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

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

#9

10.01.2019 13:03:57

TLA,

Код
Function Tla(r As Range, vlt As String) As Double
Dim c As Range
  For Each c In r.Cells
    If InStr(1, c.Text, vlt, vbTextCompare) Then Tla = Tla + c.Value
  Next
End Function

Применение: =Tla(C4:C15;»usd») =Tla(C4:C15;»eur»)

 

TLA

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

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

Казанский, спасибо большое!

 

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

Подсчитать сумму ячеек по формату

Пример:
=SumByNumberFormat($C$4:$C$15;C4)

Так же можно не учитывать скрытые фильтром ячейки.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

TLA

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

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

#12

10.01.2019 14:42:51

Цитата
Дмитрий(The_Prist) Щербаков написал: =SumByNumberFormat($C$4:$C$15;C4)

Отлично! спасибо)

У меня есть книга Excel, которая требует, чтобы я вычислил сумму разных валют в одном столбце, вот результат, который я ищу:

$40.00 в Dollars был рассчитан на основе позиций A и C, поскольку их валюта одинакова, а $20.00 в Yen — это общая сумма для предметов с валютой в Yen . Это возможно? Пожалуйста, помогите, спасибо!

Если вы открыты для пользовательской функции, попробуйте мой подход:

предположим, что ваши значения находятся в диапазоне B2:B4 и вам нужно вычислить общую сумму валюты из B2 , чем вы можете использовать формулу массива:

=SUMPRODUCT(IF(GetFormat(B2:B4)=GetFormat(B2),1,0),B2:B4)

Обратите внимание, что это формула массива, поэтому вам нужно нажать CTRL+SHIFT+ENTER

Но прежде чем добавить пользовательскую функцию в вашу книгу, вы получите массив числовых форматов диапазона:

Function GetFormat(r As Range)
    Dim arr() As String
    ReDim arr(1 To r.Cells.Count)
    i = 1
    For Each c In r
        arr(i) = c.NumberFormat
        i = i + 1
    Next c
    GetFormat = WorksheetFunction.Transpose(arr)
End Function

ответ дан Dmitry Pavliv113

Кажется, трудно определить формат валюты с помощью формулы исключительно Excel.
Even =CELL("format",B2) не используется.


Подобно идее @kobaltz, этот метод нуждается в дополнительном столбце и подвержен ошибкам.

Дополнительный столбец валюты C:C может быть вставлен вручную или выбран из раскрывающегося списка с пользовательскими значениями «US» и «YAN».

| Доллары | =SUMIF(C:C,"US",B1:B3) |
| Ян | =SUMIF(C:C,"YAN",B1:B3) |

Есть два способа сделать это. Я рекомендую вам выделить знак валюты и номер, например, 100 фунтов стерлингов записываются как 100 в ячейке, а £ в соседней ячейке. Тогда у вас может быть 50e (евро) ниже 50 и e и так далее.

Первый метод предполагает использование сводных таблиц — очень просто.

Но еще более простой и предпочтительный способ заключается в следующем

В диапазоне от d2 до d19 у нас есть суммы (только цифры), а в диапазоне от c2 до c19 у нас есть такие символы, как e, £ или $ и т.д.

В отдельной ячейке, где я хочу показать сумму е, я ввожу:

= SUMIF(D2:D19, «е», С2: С19)

Рядом с ним я хочу суммировать £, поэтому я ввожу:

= SUMIF(D2:D19, «£», С2: С19)

Это работает как сон.

ответ дан Athar Siddiqui1

В диапазоне от B2 до B4 у нас есть суммы (только числа, 10,00, 20,00 и 30,00), а в диапазоне от C2 до C4 у нас есть символы ($, Yan, $)

В отдельной ячейке мы хотим показать сумму $, я ввожу:= SUMIFS(B2:B4, C2:C4, C5) Ячейка C5 заполнена «$»

Рядом с ним я хочу сложить Ян, поэтому я ввожу:= SUMIFS(B2:B4, C2:C4, C6) Ячейка C6 заполнена «Ян»

Оно работает.

Как это устроено:

  1. Нажмите Ctrl+F3 и нажмите New .
  2. Напишите Cell_Format в поле Name Box .
  3. Введите это в Refers To Box .

     =GET.CELL(53,Sheet1!$B2)
    

NB Sheet1!$B2 доступен для редактирования.

  1. Запишите эту формулу в ячейку C2 и заполните.

    =LEFT(Cell_Format,1)
    
  2. Введите символы $, ₹ & £ в ячейку D2, D3 & D4 .

  3. Запишите эту формулу в ячейку C8 и заполните.

    =SUMIF($C$2:$C$6,D2,$B$2:$B$6)
    

Как отдельно суммировать валютные ячейки

XACAH

Дата: Среда, 29.06.2016, 15:53 |
Сообщение № 1

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

Ранг: Прохожий

Сообщений: 7


Репутация:

0

±

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


Excel 2007

Добрый день, господа. Подскажите, пожалуйста, новичку. Задача следующая.
В столбце стоят числа, указанные в рублях, долларах и евро. Надо получить сумму ячеек этого столбца в рублях по заданному в отдельной ячейке курсу.
Перефразирую, каким образом в excel можно обозначить валюту (доллары, евро и рубли) для того, чтобы ячейки с долларами, евро и рублями отдельно сложить? Спасибо.

 

Ответить

Udik

Дата: Среда, 29.06.2016, 15:56 |
Сообщение № 2

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

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

Сообщений: 1588


Репутация:

192

±

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


Excel 2016 х 64

файл где?


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com

 

Ответить

abtextime

Дата: Среда, 29.06.2016, 15:58 |
Сообщение № 3

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

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

Сообщений: 828


Репутация:

117

±

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


Excel 2010

В чем проблема сделать рядом столбец, где указывать вид валюты?

 

Ответить

XACAH

Дата: Среда, 29.06.2016, 16:03 |
Сообщение № 4

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

Ранг: Прохожий

Сообщений: 7


Репутация:

0

±

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


Excel 2007

в одной строке могут содержаться разные валюты

 

Ответить

abtextime

Дата: Среда, 29.06.2016, 16:12 |
Сообщение № 5

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

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

Сообщений: 828


Репутация:

117

±

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


Excel 2010

В одной _строке_? … ага … ну-ну …

Я же Вам говорю — сделайте два столбца (рядом) — в одном числа, в другом обозначения валют (например RUR, USD, EUR)

Можно визуализировать валюты и видами денежного формата, но зачем вам этот геморрой?

Давайте файл, что и как Вы хотите видеть

 

Ответить

XACAH

Дата: Среда, 29.06.2016, 17:14 |
Сообщение № 6

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

Ранг: Прохожий

Сообщений: 7


Репутация:

0

±

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


Excel 2007

У меня по горизонтали (в строке) расписан понедельно весь год. По вертикали — наименование закупаемого оборудования.
Так вот оборудование в один промежуток времени за евро покупается, за доллары доставляется, а за рубли монтируется., и все эти данные указаны в одной строке, но в разные промежутки времени. НЕЛЬЗЯ вставить в строку отдельным столбцом наименование валюты.
Мне надо вывести потребности в рублях еженедельно.
Позиций разного оборудования много.
[moder]
А у нас ничего нет. Почитайте правила форума, и вложите пример.[/moder]

Сообщение отредактировал SLAVICKСреда, 29.06.2016, 17:17

 

Ответить

Nic70y

Дата: Среда, 29.06.2016, 17:17 |
Сообщение № 7

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

Ранг: Экселист

Сообщений: 8136


Репутация:

1999

±

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


Excel 2010

XACAH. Вы файл-то покажите? (весь не надо)


ЮMoney 41001841029809

 

Ответить

abtextime

Дата: Среда, 29.06.2016, 17:34 |
Сообщение № 8

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

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

Сообщений: 828


Репутация:

117

±

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


Excel 2010

Это, конечно, не моё собачье дело, но у Вас еще и данные неправильно с точки зрения грамотного структурирования располагаются.

По уму, данные должны накапливаться в однородной плоской таблица вида «Оборудование — Вид(код) затрат — Дата — Сумма — Валюта — Что-то еще (например Контрагент) «

Например:
Станок F-111- Закупка — 01.01.16 — 1000000 — USD
Станок F-111- Доставка — 15.01.16 — 2100000 — RUR
Микроскоп АППР — Закупка — …
Микроскоп АППР — Доставка — …
Услуги технического перевода — Оплата услуг — …

И вот с этим «богатством» уже очень легко всё анализировать, сводить в сводные, фильтровать и т.д.

 

Ответить

abtextime

Дата: Среда, 29.06.2016, 17:45 |
Сообщение № 9

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

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

Сообщений: 828


Репутация:

117

±

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


Excel 2010

НЕЛЬЗЯ вставить в строку отдельным столбцом наименование валюты.

Тогда два пути:
1. Обозначать валюту путем форматирования (денежный формат). В этом случает для суммирование в рублях надо будет подписать макрос-UDF (User Defined Function)
2. Вводить суммы как текст, например «1000 USD», «2000 EUR» или «USD 1000», «EUR 2000» (рублевые суммы можно без пре-/постфикса или с RUR). Для такой записи можно просто формулами задать операции суммирования с учетом валют

Сообщение отредактировал abtextimeСреда, 29.06.2016, 17:46

 

Ответить

XACAH

Дата: Среда, 29.06.2016, 18:14 |
Сообщение № 10

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

Ранг: Прохожий

Сообщений: 7


Репутация:

0

±

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


Excel 2007

abtextime, вы наверно правы, таблица составлена не грамотно. Но она нужна только для наглядного планирования.

Тогда два пути:
1. Обозначать валюту путем форматирования (денежный формат). В этом случает для суммирование в рублях надо будет подписать макрос-UDF (User Defined Function)
2. Вводить суммы как текст, например «1000 USD», «2000 EUR» или «USD 1000», «EUR 2000» (рублевые суммы можно без пре-/постфикса или с RUR). Для такой записи можно просто формулами задать операции суммирования с учетом валют

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

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

8573980.xlsx
(12.4 Kb)

 

Ответить

abtextime

Дата: Среда, 29.06.2016, 18:55 |
Сообщение № 11

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

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

Сообщений: 828


Репутация:

117

±

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


Excel 2010

Смотрите … Обратите внимание на ячейки, залитые зеленым

[vba]

Код

Public Function CurFormat(RR As Range) As String

F = RR.Cells(1, 1).NumberFormatLocal

CurFormat = «RUR»
If Replace(F, «$», «») <> F Then CurFormat = «USD»
If Replace(F, «ˆ», «») <> F Then CurFormat = «EUR»

End Function

Public Function RURSum(RR As Range, USD As Double, EUR As Double) As Double

Dim R As Range

For Each R In RR
    S = R.Value
    If CurFormat(R) = «USD» Then S = S * USD
    If CurFormat(R) = «EUR» Then S = S * EUR
    RURSum = RURSum + S
Next

End Function

[/vba]

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

8573980.xlsm
(21.2 Kb)

 

Ответить

XACAH

Дата: Среда, 29.06.2016, 19:10 |
Сообщение № 12

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

Ранг: Прохожий

Сообщений: 7


Репутация:

0

±

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


Excel 2007

Спасибо, а можно описать, а то я ничего не понял…
почему ячейки, залитые зеленым, расположены в непонятных по времени местах?
Если у меня сдвинутся даты оплаты, будет ли работать таблица?

 

Ответить

abtextime

Дата: Среда, 29.06.2016, 19:15 |
Сообщение № 13

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

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

Сообщений: 828


Репутация:

117

±

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


Excel 2010

ХАСАН
Я не ставил целью сделать за Вас всю работу.

Написал Вам функцию RURSum (диапазон суммирования, курс USD, курс EUR), которая суммирует числа из заданного диапазона, с учетом валюты (валюты в формате) при заданных курсах).

Поставить эту функцию в нужные Вам ячейки по аналогии Вы можете сами?

Зеленые ячейки — просто, чтобы показать на примерах, как работает функция

 

Ответить

XACAH

Дата: Среда, 29.06.2016, 19:24 |
Сообщение № 14

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

Ранг: Прохожий

Сообщений: 7


Репутация:

0

±

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


Excel 2007

Обязательно иметь ячейки USD и EUR?

Теперь возникает у меня 2 вопроса))): 1) Как функцию, которую вы разработали, вставить в мой файл?
2) Каким образом при подсчете суммы в столбцах исключить при суммировании цифру, проставленную в валюте, а остальные (рублёвые суммы) складывать?

 

Ответить

abtextime

Дата: Среда, 29.06.2016, 21:24 |
Сообщение № 15

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

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

Сообщений: 828


Репутация:

117

±

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


Excel 2010

1) Как функцию, которую вы разработали, вставить в мой файл?

1. Сохранить ваш файл с расширением xlsm (файл Excel с поддержкой макросов)
2. Alt+F11 — открыть панель VBA. Встать на Лист 1 в иерархическом дереве (слева), Insert — Module. Через Ctl+C — Ctrl+V вставить туда мой код
3. Всё, можно использовать имеющиеся в коде функции CurFormat и RURSum

2) Каким образом при подсчете суммы в столбцах исключить при суммировании цифру, проставленную в валют

Замените кусочек кода
[vba]

Код

If CurFormat(R) = «USD» Then S = S * USD
If CurFormat(R) = «EUR» Then S = S * EUR

[/vba]
на
[vba]

Код

If CurFormat(R) = «USD» Then S = 0
If CurFormat(R) = «EUR» Then S = 0

[/vba]

Разумеется, заголовок функции можно в этом случае поменять с
[vba]

Код

Public Function RURSum(RR As Range, USD As Double, EUR As Double) As Double

[/vba]
на
[vba]

Код

Public Function RURSum(RR As Range) As Double

[/vba]

Если же Вас эта макросятина :) напрягает, то воспользуйтесь другой формой записи и другим моим советом

2. Вводить суммы как текст, например «1000 USD», «2000 EUR» или «USD 1000», «EUR 2000» (рублевые суммы можно без пре-/постфикса или с RUR). Для такой записи можно просто формулами задать операции суммирования с учетом валют

В этом случае можно обойтись обычной формулой

Сообщение отредактировал abtextimeСреда, 29.06.2016, 21:28

 

Ответить

XACAH

Дата: Четверг, 30.06.2016, 14:13 |
Сообщение № 16

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

Ранг: Прохожий

Сообщений: 7


Репутация:

0

±

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


Excel 2007

Ну спасибо, выручили. Тема закрыта.

 

Ответить

I have an excel workbook which requires me to calculate the sum of different currencies on the same column, here is the result I’m looking for:

enter image description here

The $40.00 in Dollars was calculated based on item A and C since their currency are the same, while $20.00 in Yen is the total for items that has the currency of Yen. Is this possible? Please help, thanks!

kobaltz's user avatar

kobaltz

14.8k3 gold badges35 silver badges57 bronze badges

asked Jan 4, 2014 at 2:37

PrankyMat's user avatar

1

If you are open for user defined function, try my approach:

suppose your values are in B2:B4 range and you need to calculate total sum of currency from B2, than you can use array formula:

=SUMPRODUCT(IF(GetFormat(B2:B4)=GetFormat(B2),1,0),B2:B4)

Note, that it is an array formula, so you need to press CTRL+SHIFT+ENTER

But before you should add user defined function to your workbook to get array of range numberformats:

Function GetFormat(r As Range)
    Dim arr() As String
    ReDim arr(1 To r.Cells.Count)
    i = 1
    For Each c In r
        arr(i) = c.NumberFormat
        i = i + 1
    Next c
    GetFormat = WorksheetFunction.Transpose(arr)
End Function

answered Jan 4, 2014 at 20:09

Dmitry Pavliv's user avatar

There are two ways you can do it. I recommend that you separate out the currency sign and number so for example £100 is written as 100 in in cell and £ in the adjacent cell. Then you may have below it 50e (euro) written as 50 and e and on.

The first method involves using pivot tables — very simple.

But even simpler and the preferred way is as follows

In range d2 to d19 we have amounts (just numbers) and in range c2 to c19 we have the symbols like e or £ or $ etc

In a separate cell where I want to show the total of e, I enter:

=SUMIF(D2:D19,»e»,C2:C19)

Next to it I want to sum the £, so I enter:

=SUMIF(D2:D19,»£»,C2:C19)

It works like a dream.

Chenmunka's user avatar

Chenmunka

3,22813 gold badges28 silver badges37 bronze badges

answered Sep 12, 2014 at 7:14

Athar Siddiqui's user avatar

1

enter image description here

How it works:

  1. Press Ctrl+F3 & Click New.
  2. Write Cell_Format in Name Box.
  3. Enter this in Refers To Box.

     =GET.CELL(53,Sheet1!$B2)
    

N.B. Sheet1!$B2 is editable.

  1. Write this Formula in Cell C2 & fill down.

    =LEFT(Cell_Format,1)
    
  2. Enter $, ₹ & £ symbols in Cell D2, D3 & D4.

  3. Write this formula in Cell C8 & fill down.

    =SUMIF($C$2:$C$6,D2,$B$2:$B$6)
    

answered Oct 16, 2018 at 13:15

Rajesh Sinha's user avatar

Rajesh SinhaRajesh Sinha

8,8926 gold badges15 silver badges35 bronze badges

It seems difficult to identify the currency format by using solely excel formula.
Even =CELL("format",B2) is not useful.


Similar to @kobaltz idea, this method needs an extra column and is error-prone.

The additional Currency column C:C can either be manually inserted or selected from drop-down list with custom values «US» and «YAN».

| Dollars | =SUMIF(C:C,"US",B1:B3) |
| Yan | =SUMIF(C:C,"YAN",B1:B3) |

answered Jan 6, 2014 at 7:46

Ivan Chau's user avatar

Ivan ChauIvan Chau

1,3839 silver badges18 bronze badges

In range B2 to B4 we have amounts (just numbers, 10.00, 20.00 and 30.00 )
and in range C2 to C4 we have the symbols ($,Yan,$)

In a separate cell we want to show the total of $, I enter:
=SUMIFS(B2:B4,C2:C4,C5)
C5 cell is fill with «$»

Next to it I want to sum the Yan , so I enter:
=SUMIFS(B2:B4,C2:C4,C6)
C6 cell is fill with «Yan»

It works.

answered Oct 16, 2018 at 11:02

Kok Shong's user avatar

I wanted to figure out the total # of all currencies as a value not for example:

US 1 /
EUR 1.1 /
CAD 1.4 /
BOL 700,000 /
RMB 8 /

to get a final official total of numbers divided by total contributors countries. sO if the total countries # value in market officially is 112890 and we divide by 200 countries contributed we would get value of 564.45. Then move on with other information of population, total official currency in cicurlation, adding crypto and metals etc would be a nice data set to look into.

This would be a nice number to see from a different perspective with live updates. with total changes and updated for the world to see its growth and changes. If anyone can help would be awesome!

answered May 24, 2022 at 14:39

Jimmy's user avatar

2

Хитрости »

30 Сентябрь 2016              10155 просмотров


Подсчитать сумму ячеек по формату

Несколько нестандартная задача: получить сумму ячеек отдельно для долларов, отдельно для евро, отдельно для рублей, но в таблице они при этом записаны вперемешку:
Суммирование ячеек по формату
И все эти доллары и рубли заданы для ячеек через формат ячеек(правая кнопка мыши на ячейке —Формат ячеек(Format Cells) -вкладка Число(Number)).
Ни одна стандартная функция в Excel этого делать не умеет, т.к. не различает подобные форматы ячеек. Поэтому я решил написать функцию пользователя(UDF), которая исправляет эту несправедливость.
Если не знаете что такое функция пользователя советую сначала прочитать статью: Что такое функция пользователя(UDF)?.
При этом функция может работать только с видимыми ячейками. Т.е. если отфильтровать диапазон, то функция подсчитает данные только отфильтрованных ячеек.

Option Explicit
 
'---------------------------------------------------------------------------------------
' Procedure : SumByNumberFormat
' Author    : The_Prist(Щербаков Дмитрий)
'             http://www.excel-vba.ru
' Purpose   : Функция суммирования ячеек на основе формата ячейки.
' Аргументы:
'             rRange     - диапазон с ячейками для суммирования.
'             rTemplCell - ячейка-образец формата ячейки
'             bSumHide   - ИСТИНА или 1 учитывает скрытые ячейки.
'                          ЛОЖЬ, 0 или опущен(по умолчанию) - скрытые ячейки не суммируются.
'---------------------------------------------------------------------------------------
Function SumByNumberFormat(rRange As Range, rTemplCell As Range, Optional bSumHide As Boolean = False)
    Application.Volatile  'закомментировать, чтобы функция не обновляла свои значения по нажатию Shift+F9(пересчет листа)
    Dim sFormat As String, rCell As Range, dblSum As Double, vVal
    sFormat = rTemplCell.NumberFormatLocal
    For Each rCell In rRange
        If rCell.NumberFormatLocal = sFormat Then
            vVal = rCell.Value
            If IsNumeric(vVal) Then
                If rCell.EntireRow.Hidden Or rCell.EntireColumn.Hidden Then
                    If bSumHide Then dblSum = dblSum + vVal
                Else
                    dblSum = dblSum + vVal
                End If
            End If
        End If
    Next rCell
    SumByNumberFormat = dblSum
End Function

Синтаксис функции:
без учета скрытых строк и столбцов:
=SumByNumberFormat($A$1:$A$10;B1)
все ячейки:
=SumByNumberFormat($A$1:$A$10;B1;1)

rRange($A$1:$A$10) — ссылка на диапазон с ячейками для суммирования.
rColorCell(B1) — ссылка на ячейка-образец с форматом ячейки.
bSumHide — Если указано ИСТИНА или 1 учитывает скрытые ячейки. ЛОЖЬ, 0 или опущен(по умолчанию) — скрытые ячейки не суммируются.

Как можно применить. Если посмотреть на картинку выше, то в ячейках D2:D4 уже просуммированы данные на основании формата приведенной выше функцией пользователя:

    в D2: =SumByNumberFormat($A$2:$A$8;C2)
    в D3: =SumByNumberFormat($A$2:$A$8;C3)
    в D4: =SumByNumberFormat($A$2:$A$8;C4)

в столбце С при этом заданы нужные форматы для суммирования. Чтобы теперь определить сумму в единой валюте(например, в рублях), можно записать в ячейки Е3 и Е4 курс доллара и евро(для этого можно использовать функцию из этой статьи — Получить курс валют от ЦБР). После чего в отдельной ячейке записать формулу: =СУММ(D2;D3*E3;D4*E4)
Ниже приложен файл, в котором уже прописана функция и пример суммирования разных валют:
Скачать пример

  SumByFormat.xls (56,5 KiB, 1 076 скачиваний)


 

Чтобы подсчитывалось количество ячеек, а не их сумма, то функцию надо изменить самую малость:

'---------------------------------------------------------------------------------------
' Procedure : CountByNumberFormat
' Author    : The_Prist(Щербаков Дмитрий)
'             http://www.excel-vba.ru
' Purpose   : Функция подсчета ячеек на основе формата ячейки.
' Аргументы:
'             rRange     - диапазон с ячейками для суммирования.
'             rTemplCell - ячейка-образец формата ячейки
'             bSumHide   - ИСТИНА или 1 учитывает скрытые ячейки.
'                          ЛОЖЬ, 0 или опущен(по умолчанию) - скрытые ячейки не подсчитываются
'---------------------------------------------------------------------------------------
Function CountByNumberFormat(rRange As Range, rTemplCell As Range, Optional bSumHide As Boolean = False)
    Application.Volatile  'закомментировать, чтобы функция не обновляла свои значения по нажатию Shift+F9(пересчет листа)
    Dim sFormat As String, rCell As Range, lCnt As Long, vVal
    sFormat = rTemplCell.NumberFormatLocal
    For Each rCell In rRange
        If rCell.NumberFormatLocal = sFormat Then
            vVal = rCell.Value
            If IsNumeric(vVal) Then
                If vVal <> 0 Then
                    If rCell.EntireRow.Hidden Or rCell.EntireColumn.Hidden Then
                        If bSumHide Then lCnt = lCnt + 1
                    Else
                        lCnt = lCnt + 1
                    End If
                End If
            End If
        End If
    Next rCell
    CountByNumberFormat = lCnt
End Function

Синтаксис и аргументы полностью идентичны с функцией SumByNumberFormat.

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

Так же функции не будут автоматически обновлять значения сразу после смены формата ячеек — это особенность Excel. Поэтому при изменении формата ячеек в вычисляемом диапазоне необходимо вручную пересчитать функцию(F2 -Enter).


Статья помогла? Поделись ссылкой с друзьями!

  Плейлист   Видеоуроки


Поиск по меткам



Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика

Понравилась статья? Поделить с друзьями:
  • Сумма разндат в excel
  • Сумма прописью для excel 2016
  • Сумма рабочих дней в excel
  • Сумма прописью для excel 2003
  • Сумма прямоугольного диапазона excel