2016-01-18 6 views
0

У меня есть два листа в книге Excel. Мне нужна формула, которая соответствует SITEID и объединяет 3 значения в 1, разделенные символом /. Я попытался использовать Vlookup с диапазонами, но не получить фактические результаты.Excel конкатенация с использованием формулы или vlookup

Первый лист содержит (4 колонки):

SiteId Cell Sector Bore 
MDLH1238 12381 1 10 
MDLH1238 12382 2 20 
MDLH1238 12383 3 40 
MDLH1239 12391 1 60 
MDLH1240 12401 1 50 
MDLH1240 12402 2 20 

Второй лист содержит (2 колонки):

SiteId Bore 
MDLH1238 
MDLH1239 
MDLH1240  

Ожидаемый результат должен быть таким:

SiteId Bore 
MDLH1238 10/20/30 
MDLH1239 60 
MDLH1240 50/20 
+0

матч, то индекс значения прочь, что, таким образом совпадение получает строку, основываясь на ID, то индекс диапазон (столбец х, этот результат строки). Матч и индекс. –

+0

Я не думаю, что INDEX будет надежным, учитывая, что не на всех сайтах есть 3 записи ... Вы закончите индексирование на другой сайт? – ThunderFrame

ответ

1

Предполагая есть только 3 сектора на сайт и использование имен ваших листов, и если ваши ячейки начинаются в A1, введите их в S heet2, прилегающих к SiteIDs:

ячейки B2:

=SUMIFS(Sheet1!$D$2:$D$7,Sheet1!$A$2:$A$7,A2,Sheet1!$C$2:$C$7,1)&"/"&SUMIFS(Sheet1!$D$2:$D$7,Sheet1!$A$2:$A$7,A2,Sheet1!$C$2:$C$7,2)&"/"&SUMIFS(Sheet1!$D$2:$D$7,Sheet1!$A$2:$A$7,A2,Sheet1!$C$2:$C$7,3) 

Ячейка В3:

=SUMIFS(Sheet1!$D$2:$D$7,Sheet1!$A$2:$A$7,A3,Sheet1!$C$2:$C$7,1)&"/"&SUMIFS(Sheet1!$D$2:$D$7,Sheet1!$A$2:$A$7,A3,Sheet1!$C$2:$C$7,2)&"/"&SUMIFS(Sheet1!$D$2:$D$7,Sheet1!$A$2:$A$7,A3,Sheet1!$C$2:$C$7,3) 

Ячейка В4:

=SUMIFS(Sheet1!$D$2:$D$7,Sheet1!$A$2:$A$7,A4,Sheet1!$C$2:$C$7,1)&"/"&SUMIFS(Sheet1!$D$2:$D$7,Sheet1!$A$2:$A$7,A4,Sheet1!$C$2:$C$7,2)&"/"&SUMIFS(Sheet1!$D$2:$D$7,Sheet1!$A$2:$A$7,A4,Sheet1!$C$2:$C$7,3) 

Это должно произвести содержание, как:

SiteId Bore 
MDLH1238 10/20/40 
MDLH1239 60/0/0 
MDLH1240 50/20/0 

У этого есть дополнительные записи «/ 0», в которых сектор 2/3 не существует, но формулы становятся длиннее и труднее читать, чтобы сделать это.

Edit: Добавляет формулы для работы с "/ 0"

Cell B2:

=SUMIFS(Sheet1!$D$2:$D$7,Sheet1!$A$2:$A$7,A2,Sheet1!$C$2:$C$7,1)&IF(SUMIFS(Sheet1!$D$2:$D$7,Sheet1!$A$2:$A$7,A2,Sheet1!$C$2:$C$7,2)>0,"/"&SUMIFS(Sheet1!$D$2:$D$7,Sheet1!$A$2:$A$7,A2,Sheet1!$C$2:$C$7,2),"")&IF(SUMIFS(Sheet1!$D$2:$D$7,Sheet1!$A$2:$A$7,A2,Sheet1!$C$2:$C$7,3)>0,"/"&SUMIFS(Sheet1!$D$2:$D$7,Sheet1!$A$2:$A$7,A2,Sheet1!$C$2:$C$7,3),"") 

Cell B3:

=SUMIFS(Sheet1!$D$2:$D$7,Sheet1!$A$2:$A$7,A3,Sheet1!$C$2:$C$7,1)&IF(SUMIFS(Sheet1!$D$2:$D$7,Sheet1!$A$2:$A$7,A3,Sheet1!$C$2:$C$7,2)>0,"/"&SUMIFS(Sheet1!$D$2:$D$7,Sheet1!$A$2:$A$7,A3,Sheet1!$C$2:$C$7,2),"")&IF(SUMIFS(Sheet1!$D$2:$D$7,Sheet1!$A$2:$A$7,A3,Sheet1!$C$2:$C$7,3)>0,"/"&SUMIFS(Sheet1!$D$2:$D$7,Sheet1!$A$2:$A$7,A3,Sheet1!$C$2:$C$7,3),"") 

Cell B4:

=SUMIFS(Sheet1!$D$2:$D$7,Sheet1!$A$2:$A$7,A4,Sheet1!$C$2:$C$7,1)&IF(SUMIFS(Sheet1!$D$2:$D$7,Sheet1!$A$2:$A$7,A4,Sheet1!$C$2:$C$7,2)>0,"/"&SUMIFS(Sheet1!$D$2:$D$7,Sheet1!$A$2:$A$7,A4,Sheet1!$C$2:$C$7,2),"")&IF(SUMIFS(Sheet1!$D$2:$D$7,Sheet1!$A$2:$A$7,A4,Sheet1!$C$2:$C$7,3)>0,"/"&SUMIFS(Sheet1!$D$2:$D$7,Sheet1!$A$2:$A$7,A4,Sheet1!$C$2:$C$7,3),"") 

Выход:

SiteId Bore 
MDLH1238 10/20/40 
MDLH1239 60 
MDLH1240 50/20 
+0

Будет ли функция [ЗАМЕСТИТЕЛЬ] (https://support.office.com/en-us/article/substitute-function-2bdd8fb3-d756-4656-8aa4-e871e6578671) сделать вещи немного более аккуратными? например '= SUBSTITUTE (SUMIFS (D: D, A: A, G2, C: C, 1) &"/"& SUMIFS (D: D, A: A, G2, C: C, 2) &"/"& SUMIFS (D: D, A: A, G2, C: C, 3), "/ 0", "") '(нужны имена рабочих листов, но вы можете получить эту идею) – Jeeped

0

Что вы хотели бы сделать, это объединить элементы массива, используя «/» в качестве разделителя. К сожалению, родной Excel не может этого сделать, но есть много хороших функций VBA, которые уже были написаны, что, например. описанный here.

Поэтому я хотел бы предложить это решение: -

=StringConcat("/",IF(Sheet1!A$2:A$7=A2,Sheet1!D$2:D$7,"")) 

начиная в ячейке B2 второго листа и разобрали по мере необходимости. Это формула массива и ее необходимо ввести с помощью CtrlShift.

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

enter image description here

Смежные вопросы