Сума значень із рядків, якщо критерії знайдені в горизонтальному діапазоні


3

У мене є електронна таблиця з низкою записів рядків, що містять country/valueпари ( A2: C11 ) і записи рядків, що представляють regionsперелік цих countriesгоризонтальних елементів ( 14:16 ):

введіть тут опис зображення

Що я хотів би зробити, це підбити підсумки всіх цінностей для кожного регіону:

введіть тут опис зображення

Концептуально я знаю, що мені потрібно зробити, наприклад, для Північної Америки ( B19 ):

  • фільтр B2: Діапазон B11, де B знайдено у рядку 14
  • підсумуйте значення C2: 11, що відповідають відфільтрованому діапазону B2: B11

Що в цьому випадку дало б 10 (C2) + 11 (C5) + 12 (C10) = 33

Я вважаю, що потрібні мені функції - це пошук і довідкові функції , але я просто не маю уявлення про те, з чого почати:

Чи може хтось надати мені приклад для B19 (або, принаймні, списку функцій, які я повинен використовувати)?

PS: Я не хочу використовувати VBA, а лише формули

Відповіді:


5

Спробуйте цю формулу B19скопійовано

=SUMPRODUCT(SUMIF(B$2:B$11,INDEX(B$14:C$16,MATCH(A19,A$14:A$16,0),0),C$2:C$11))

  • MATCH дає правильний рядок у таблиці два
  • то INDEXдає вам усі країни в цьому ряду.
  • Потім INDEX/MATCHчастина формує аргумент критеріїв для SUMIF, і оскільки критерій - це діапазон значень, SUMIFповертає масив (сума для кожної країни окремо) ...... тому SUMPRODUCTвикористовується для підсумовування масиву, уникаючи "запису масиву"

1
Він працював над B19але мені довелося замінити MATCH(A$19з , MATCH($A19щоб скопіювати його вниз B20і B21.
Макс

Вибачте, так - цей $ не слід було включати ........ тепер виправлено ....
barry houdini

AFAIK не є рівноцінним SUMPRODUCTдля підрахунку, я правий?
Макс

1
Якщо ви просто хочете, щоб підрахунок замінив SUMIF на COUNTIF, SUMPRODUCT залишиться, тому=SUMPRODUCT(COUNTIF(B$2:B$11,INDEX(B$14:C$16,MATCH(A19,A$14:A$16,0),0)))
barry houdini

Ти найкращий;)
Макс

2

Гаразд, оскільки в регіоні є більше однієї країни, вам знадобиться досить довга формула. Я пропоную використовувати і те, SUMIF()і VLOOKUP().

=SUMIF($B$2:$B$11,VLOOKUP(A19,$A$14:$C$16,2,FALSE),$C$2:$C$11)+
 SUMIF($B$2:$B$11,VLOOKUP(A19,$A$14:$C$16,3,FALSE),$C$2:$C$11)

Перший SUMIF()- це розрахунок суми лише для Канади, а другий - лише для США. Додавання двох дає суму для регіону.

VLOOKUP()витягує назву країни з назви регіону, ви помітите, що інше знаходиться в VLOOKUP(), де перший є, 2а другий 3(безпосередньо перед помилковим). Звичайно, ви можете замінити FALSE, 0щоб вивести ті самі результати.


Крім того, якщо ви хочете більш коротку, але формулу масиву, ця працює також:

=SUM(SUMIF($B$2:$B$11,IF(A19=$A$14:$A$16,$B$14:$C$16),$C$2:$C$11))

Оскільки це формула масиву, однак, вам доведеться використовувати Ctrl+ Shift+Enter


Перша формула працює, але не друга.
Макс

@ user359650 Вам потрібно одночасно натиснути Ctrl, Shift AND Enter, щоб він працював, а не просто Вводити сюди, як це формула масиву :)
Джеррі

Що мені подобається з вашим рішенням є те , що я можу легко замінити SUMIFз , COUNTIFякщо я хочу , щоб підрахувати, в той час як з Barry«и рішення не має еквівалентаSUMPRODUCT
Max

+1 для формули масиву - це, безумовно, буде шлях, куди у вас є кілька матчів для регіону .......
barry houdini

1

Ви можете спробувати це:

=SUMPRODUCT($C$2:$C$11,--(IFERROR(MATCH($B$2:$B$11,$B14:$C14,0),0)<>0))

у комірці B19 та перетягніть її вниз. Якщо у вас є більше 2 країн на один регіон, вам потрібно розширити їх $B14:$C14відповідно.

Примітка: це формула масиву, тому ви скопіюєте її в клітинку і натисніть Ctrl + Shift + Enter, щоб вона працювала.

  • IFERROR(MATCH(...,0)) повертає масив, елементи якого показують положення кожного запису першої таблиці, у відповідному рядку другої таблиці.
  • Логічна умова перетворює всі нулі в FALSEі всі інші числа вTRUE
  • --Частина перетворює TRUEі FALSEзначення , 1і , 0відповідно ,
  • SUMPRODUCTпрацює на двох масивах: перший - це вихідний діапазон, а другий - 0/1масив, який охоплює умови, які ми вводили раніше.

Ось приємний пост, який пояснює логіку таких формул: http://www.excelhero.com/blog/2010/01/the-venerable-sumproduct.html


1
Це працює без посилання на регіон, тому вимагає, щоб регіони в таблицях 2 та 3 були вказані в тому самому порядку - ви можете спростити цю версію, як це було так=SUMPRODUCT(C$2:C$11*(B$2:B$11=B14:C14))
barry houdini

@barryhoudini Так, я припускав, що не потрібно перевіряти, чи таблиці в тому ж порядку. Вищеописаний метод все ще приємний (і ваша версія набагато більш ущільнена), але я все одно пішов би з вашою оригінальною відповіддю, оскільки це дозволяє уникнути формул масиву.

@barryhoudini Щойно перевірено =SUM(C$2:C$11*(B$2:B$11=B14:C14)) (замість SUMPRODUCTвищезазначених). Він все ще працює, оскільки нарешті є лише один масив (декартовий добуток умов). Приємно!

Так, і SUM хороший, я пропоную лише SUMPRODUCT, оскільки його не потрібно "вводити масив", як це було б із SUM
barry houdini

@barryhoudini V Добрий момент - Дякую!
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.