Excel - поиск по одному столбцу, результат из второго столбца - PullRequest
1 голос
/ 26 июля 2010

Первые три столбца существуют.Я пытаюсь создать формулу для четвертого (HH_ANALYSIS_FLAG).

ACCOUNT_NUMBER   HOUSEHOLD_NUMBER   ACCOUNT_ANALYSIS_FLAG   HH_ANALYSIS_FLAG
1001             1                  1                       0
1002             2                  0                       0
1003             3                  1                       0
1004             3                  0                       0
1005             3                  0                       0
1006             2                  0                       0
1007             4                  0                       0
1008             1                  1                       0

У меня 50 000 учетных записей.Они помечаются как анализируемые в столбце ACCOUNT_ANALYSIS_FLAG (0,1).Все счета принадлежат домохозяйству.Несколько учетных записей могут принадлежать одному домашнему хозяйству.Мне нужно, чтобы столбец HH_ANALYSIS_FLAG оценивался как true или false (0,1), если анализируется учетная запись любого в том же домохозяйстве.Итак, с приведенными выше данными и рабочей формулой моя таблица будет выглядеть так:

ACCOUNT_NUMBER   HOUSEHOLD_NUMBER   ACCOUNT_ANALYSIS_FLAG   HH_ANALYSIS_FLAG
1001             1                  1                       1
1002             2                  0                       0
1003             3                  1                       1
1004             3                  0                       1
1005             3                  0                       1
1006             2                  0                       0
1007             4                  0                       0
1008             1                  1                       1

Ответы [ 4 ]

4 голосов
/ 26 июля 2010

Следующая формула должна помочь.Фактически, это даст вам общее количество анализируемых учетных записей на домохозяйство.

    A        B       C                  D
1   ACC_NUM  HH_NUM  ACC_ANALYSIS_FLAG  HH_ANALYSIS_FLAG      
2   1001     1       1                  =SUMIF(B$2:B$50001, B2, C$2:c$50001)
3   1002     2       0                  =SUMIF(B$2:B$50001, B3, C$2:c$50001)
4   1003     3       1                  =SUMIF(B$2:B$50001, B4, C$2:c$50001)

Для каждой необходимой строки выбирается набор строк, которые разделяют значение в столбце ACC_NUM (на основе ряда строкформула) и суммирует значения в соответствующих столбцах ACC_ANALYSIS_FLAG.Это дает вам общее количество анализируемых учетных записей для данного домохозяйства.Сравните результат с 0, если вам нужно только использовать его в качестве логического значения.

РЕДАКТИРОВАТЬ:

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

2    1001     1       1                  =SUMIF(B2:B5,  B2, C2:C5)
3    1002     2       0                  =SUMIF(B2:B6,  B3, C2:C6)
4    1003     2       0                  =SUMIF(B2:B7,  B3, C2:C7)
5    1004     2       0                  =SUMIF(B2:B8,  B3, C2:C8)
6    1005     2       0                  =SUMIF(B3:B9,  B3, C3:C9)
7    1006     2       0                  =SUMIF(B4:B10, B3, C4:C10)
8    1007     2       0                  =SUMIF(B5:B11, B3, C5:C11)
9    1008     2       0                  =SUMIF(B6:B12, B3, C6:C12)
10   1009     2       0                  =SUMIF(B7:B13, B3, C7:C13)

Это предполагает, что на домохозяйство приходится не более 4 учетных записей, итаким образом, диапазон SUMIF ограничивается текущей строкой +/- 3 строки.

Чтобы избежать ссылки на недопустимые ячейки, первую и последнюю строки необходимо рассматривать как особые случаи.Если вам нужно сгенерировать единый форум для всех этих ячеек, я думаю, что было бы возможно использовать OFFSET в сочетании с MAX, MIN и ROW для генерации соответствующих диапазонов с небольшой арифметикой.

0 голосов
/ 12 марта 2012

Кеннет! Попробуйте это:

= ЕСЛИ (ВПР (В2, $ B $ 2: $ C $ 9,2,0) = 1,1,0)

Предполагается, что ваша таблица начинается с A1, что означает Account_Number в ячейке A1, а целевой столбец "HH_ANALYSIS_FLAG" в столбце D.

Надеюсь, это полезно

0 голосов
/ 27 июля 2010

Предполагается, что ваш столбец HOUSEHOLD_NUMBER - это столбец B:

=IF(SUMIF(B:B,C:C)>0,1,0)

должен это сделать.

0 голосов
/ 26 июля 2010

Вставьте другой столбец D (вы можете скрыть его позже), который равен номеру домохозяйства, если он анализируется, и нулю, если это не так.Формула для D2 может быть =B2*C2.Заполните столбец D этой формулой.

Затем для столбца HH_ANALYSIS_FLAG вы можете подсчитать количество значений в столбце D, которые соответствуют домохозяйству в столбце B. Формула будет выглядеть как IF(COUNTIF(D:D,"="&B2)>0,1,0).

Я не уверен, достаточно ли быстр этот подход для 50 000 учетных записей.

          A                B                    C                    D                 E
1   ACCOUNT_NUMBER  HOUSEHOLD_NUMBER  ACCOUNT_ANALYSIS_FLAG  HH_UNDER_ANALYSIS HH_ANALYSIS_FLAG
2   1001            1                 1                      1 (=B2*C2)        =IF(COUNTIF(D:D,"="&B2)>0,1,0)  
3   1002            2                 0                      0 (=B3*C3)        =IF(COUNTIF(D:D,"="&B3)>0,1,0)
4   1003            3                 1                      3 (=B4*C4)        =IF(COUNTIF(D:D,"="&B4)>0,1,0)        
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...