Excel - добавление серийного номера в список отсортированных адресных данных для ранжирования отдельных имен непоследовательным образом - PullRequest
0 голосов
/ 26 февраля 2019

Добрый день, у меня есть список из 70000 имени, фамилии и адреса.Список был отсортирован по адресу, городу, штату и почтовому индексу.Это означает, что члены семьи, проживающие по одному адресу, будут перечислены рядом друг с другом.Мне нужно добавлять номер в пустую ячейку всякий раз, когда есть повторяющаяся фамилия, но уникальное имя под тем же адресом домашнего хозяйства - это означает, что у Джима Джонсона будет 1, а у Терезы Джонсон будет 2 в пустой ячейке.Но если в 10 строках есть еще одно семейство с фамилией Джонсон, серийный номер начнется с 1, а не с 3.

Например: введите описание изображения здесь

Я пытался использовать: = COUNTIF ($ A $ 2: A2, A2), но проблема в том, что при использовании этой формулы ей присваивается следующий порядковый номер, соответствующий фамилии, поэтому он больше не заботится о том, чтобы дубликаты были перечислены водин адрес (таким образом, значения будут выходить за пределы 1, 2, и это назначит 3 для семейства «Пина», у которого другой адрес.

Я пробовал = IF (COUNTIF (A $ 2: A2, A2)= 1, MAX (B $ 1: B1) + 1, VLOOKUP (A2, A $ 1: B1,2,0)), но эта формула сделала то же самое.

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

Ответы [ 3 ]

0 голосов
/ 27 февраля 2019

Я действительно не понимаю, как столбец A используется в данных образца и формулах. Фамилия представляется столбцом B.

=IF(B1<>B2, 1, COUNTIF(B2:INDEX(B:B, AGGREGATE(14, 7, ROW($1:2)/(B$1:B2<>B2), 1)), B2))

enter image description here

Эта формула может быть сокращена до

=COUNTIF(B2:INDEX(B:B, AGGREGATE(14, 7, ROW($1:2)/(B$1:B2<>B2), 1)), B2)

Обтекание IF должно уменьшить общие вычисления, но его влияние зависит от того, сколько групп находится в вашем наборе данных.

0 голосов
/ 27 февраля 2019

Простой ЕСЛИ

В ячейке C2:

=IF(B1<>B2,1,C1+1))

Если у вас есть пустые ячейки, добавьте еще IF:

=IF(B2="","",IF(B1<>B2,1,C1+1))

Это покроет вашуimage.

Но что если следующая семья по следующему адресу будет иметь ту же фамилию, что и предыдущая?Затем вам нужно будет ввести адрес в сгиб, то есть добавить еще одно условие.

Допустим, что адрес находится в столбце G:

=IF(B2="","",IF(B1<>B2,1,IF(G1<>G2,1,C1+1)))

Это будет охватывать адрес.

Но что, если следующая семья живет по тому же адресу, но в другом городе и имеет ту же фамилию, что и предыдущая?... и т. д.

Вы могли бы пойти еще дальше, но вам решать, когда прекратить эту «паранойю».

0 голосов
/ 27 февраля 2019

Вам нужно больше, чем одно условие COUNTIF даст вам:

=COUNTIFS(B$2:B8,B8,C$2:C8,C8)

Должен выполнять работу, но будет включать дубликаты в счет.

Если вы хотите дубликаты дляне прибавлять к счету, нужно что-то вроде:

=COUNTIFS(A$2:A8,"<>"&A8,B$2:B8,B8,C$2:C8,C8)+1
...