2016-02-07 4 views
1

Я пытаюсь сравнить два столбца для одинаковых значений в ячейках. Не все из них совпадают. Для тех, которые соответствуют, т. Е. Ячейка в столбце B1 соответствует ячейке в столбце D2, я хотел бы вычесть A1-C2. A и B поступают из одного пула данных, а C и D - из другого. Их следует сравнивать, а значения вычитаются, если строки совпадают.Excel - сравнить два столбца, если совместить вычитание значений из двух других столбцов из соответствующих строк.

Image of columns

Спасибо

+0

Как вы хотите, чтобы результаты были дисплей? Я угадываю список совпадающих строк в одном столбце с соответствующим результатом в столбце справа от него? – SincereApathy

ответ

0

Чтобы получить список соответствующих строк затем использовать эту формулу. Я положил его в F1:

=IFERROR(INDEX($D$1:$D$500,AGGREGATE(15,6,ROW($1:$500)/(COUNTIF($B$1:$B$500,$D$1:$D$500)),ROW(1:1))),"") 

И скопируйте, насколько вам угодно. Эта формула работает только в том случае, если у вас есть 2010 или более поздние версии.

Если у вас есть 2007 или более ранних версий, чем заменить его с этой формулой массива:

=IFERROR(INDEX($D$1:$D$500,SMALL(IF(COUNTIF($B$1:$B$500,$D$1:$D$500),ROW($1:$500)),ROW(1:1))),"") 

Вам нужно будет подтвердить его с помощью Ctrl-Shift-Enter вместо Enter при выходе из режима редактирования.

Тогда в G1 я поставил:

=IF(F1<>"",SUMIF(B:B,F1,A:A)-SUMIF(D:D,F1,C:C),"") 

И записал такое же количество строк.

enter image description here

+0

Большое спасибо, но похоже, что строка жестко закодирована и не может использоваться в этом случае. Формула должна найти значения фиксации и выполнить расчет, если он соответствует. Кроме того, я просто понял, что значение String должно быть возвращено, чтобы мы знали, к какой строке принадлежит результат. :/ – WebMast2015

+0

@ WebMast2015 см. Редактирование. –

+0

Спасибо за помощь! Я делаю то же самое, и я получаю пустые ячейки. Нет ошибок, ничего. Я просто изменил диапазон, и он находится в разных ячейках в моем случае: = IFERROR (ИНДЕКС ($ D $ 1: $ D $ 600, AGGREGATE (15,6, ROW ($ 1: $ 600)/(COUNTIF ($ B $ 1: $) B $ 600, $ D $ 1: $ D $ 600)), ROW (1: 1))), "") = IF (I1 <> "", SUMIF (B: B, I1, A: A) -SUMIF (D: D, I1, C: C), "") – WebMast2015

0

Посмотрите на следующей формуле. Это может вам помочь.
Формула в ячейке E1:

=IF(ISNUMBER(MATCH(D1,$B$1:$B$4,0)),INDIRECT("A"&MATCH(D1,$B$1:$B$4,0))-C1,"") 

enter image description here

Отредактировано после комментария.
В случае таблицы с заголовком, используйте следующие формулы: Его включены negative value, который отсутствует (как мой предположим)

=IF(ISNUMBER(MATCH([Data4],[Data2],0)),INDIRECT("B"&(MATCH([Data4],[Data2],0)+ROW($B$3)))-[Data3],[Data3]*(-1)) 

enter image description here

+0

Спасибо! Он работает как представленный, за исключением того, что он ломается при использовании в таблице с заголовками (значения A меня перепутали). Кроме того, как заставить его показывать значения для тех, которые не совпадают? В основном это отрицательные значения C (например, мы имеем String-88 в столбце C, но не в B. В C & D всегда больше строк данных, чем в A & B). Еще раз спасибо! – WebMast2015

+0

Без таблицы эта формула включает отрицательное значение '= IF (ISNUMBER (MATCH (D1, $ B $ 1: $ B $ 4,0)), INDIRECT (" A "& (MATCH (D1, $ B $ 1: $ B $ 4, 0))) - C1, C1 * -1) 'Вам нужно немного настроить, если данные не начинаются с первой строки. – harun24hr

+0

См. Отредактированный ответ для таблицы с заголовками. В случае позиции вашего стола в листе вам нужно настроить первый столбец в косвенной формуле «Косвенный (« B »и ...)». Вы также должны отрегулировать '+ ROW ($ B $ 3)' после формулы 'match' в 'косвенная' функция. – harun24hr

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