Индекс соответствия с несколькими критериями строк и столбцов на листах Google - PullRequest
0 голосов
/ 08 октября 2018

У меня есть электронная таблица с 3 листами: один для покупок напитков по месяцам, один для покупок фруктов по месяцам и один основной лист, в котором я хочу отобразить сводку данных из двух других листов.

Я пытаюсь отобразить данные в правой ячейке на основе названия ресторана (Col A), типа фруктов или напитков (Col B) и месяца (строка 2).Так, например, если «Сок для ресторана 1» в 18 января стоил 20 €, я хочу, чтобы в основной таблице отображалось 20 € в ячейке C6 (см. Таблицу ниже).Я пробовал разные совпадения индексов, суффиксы и формулы массивов, но не смог понять это правильно.

Я пытался найти решения, но не смог найти ничего, что бы соответствовало моему конкретному случаю.Я надеюсь, что кто-то может помочь мне!

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

https://docs.google.com/spreadsheets/d/1O3PhzAg1qRPGGHBTlphCETEBDJg8sZrVW0rVmghbVCM/edit?usp=sharing

Спасибо!

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Вот предложение только для напитков:

=index(Beverages!$C:$L,match($B4,index(Beverages!$B:$B,match(index($A:$A,match("zzz",$A$1:index($A:$A,row()),1)),Beverages!$A:$A,0)):Beverages!$B$100,0)+match(index($A:$A,match("zzz",$A$1:index($A:$A,row()),1)),Beverages!$A:$A,0)-1,match(C$2,Beverages!$C$2:$L$2,0))

Редактировать

Это может быть упрощено (не нужен индекс)

=index(Beverages!$C:$L,match($B4,index(Beverages!$B:$B,match(index($A:$A,match("zzz",$A$1:$A4,1)),Beverages!$A:$A,0)):Beverages!$B$100,0)+match(index($A:$A,match("zzz",$A$1:$A4,1)),Beverages!$A:$A,0)-1,match(C$2,Beverages!$C$2:$L$2,0))

Объяснение

(1) Найдите, с каким рестораном вы сейчас работаете:

index($A:$A,match("zzz",$A$1:$A4,1))

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

(2) Найдите строку, где начинается этот ресторан на листе напитков:

match(index($A:$A,match("zzz",$A$1:$A4,1)),Beverages!$A:$A,0)

(3)Теперь сопоставьте название напитка на листе с напитками:

match($B4,index(Beverages!$B:$B,match(index($A:$A,match("zzz",$A$1:$A4,1)),Beverages!$A:$A,0)):Beverages!$B$100,0)

(4) Но вам все равно нужно добавить начальную позицию поиска (поскольку вы не начинали сверху):

match($B4,index(Beverages!$B:$B,match(index($A:$A,match("zzz",$A$1:$A4,1)),Beverages!$A:$A,0)):Beverages!$B$100,0)+match(index($A:$A,match("zzz",$A$1:$A4,1))

Все это дает нужную строку в листе с напитками.

(5) Вы можете получить столбец в листе с напитками, просто сопоставив соответствующий месяц из строки 2:

match(C$2,Beverages!$C$2:$L$2,0)

(или если бы месяцы совпали, вы могли бы просто перенести это).

Так что всеth Напитки и фрукты будут

=iferror(index(Beverages!$C:$L,match($B4,index(Beverages!$B:$B,match(index($A:$A,match("zzz",$A$1:$A4,1)),Beverages!$A:$A,0)):Beverages!$B$100,0)+match(index($A:$A,match("zzz",$A$1:$A4,1)),Beverages!$A:$A,0)-1,match(C$2,Beverages!$C$2:$L$2,0))
,index(Fruit!$C:$L,match($B4,index(Fruit!$B:$B,match(index($A:$A,match("zzz",$A$1:$A4,1)),Fruit!$A:$A,0)):Fruit!$B$100,0)+match(index($A:$A,match("zzz",$A$1:$A4,1)),Fruit!$A:$A,0)-1,match(C$2,Fruit!$C$2:$L$2,0)))
0 голосов
/ 09 октября 2018

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

, если Сок для ресторана 1 в 18 января стоил 20 €, я хочу, чтобы в основной таблице отображалось 20 € в ячейке C6

, просто поместите =Beverages!C7 в C6.

Вы можете сделать это вручную для всех gen-18, а затем перетащить их по горизонтали, используя автозаполнение для оставшегося месяца. enter code here

...