Excel – 查找一列,结果来自第二列
前三列存在。 我正在尝试创build第四个公式(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列来评估真假(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
下面的公式应该做的伎俩。 事实上,它会给你每个家庭分析帐户的总数。
ABCD 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)
对于每一行,select共享ACC_NUM列中的值的行集(基于包含公式的行),并将相应的ACC_ANALYSIS_FLAG列中的值相加在一起。 这会给出给定家庭的分析账户总数。 如果您只需要将其作为布尔值使用,则将结果与0进行比较。
编辑:
显然这个performance并不合格。 但是,假设家庭人数都居于同一地位,那么应该可以通过改变来使事情显着加速到如下所示。
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行。
为了避免引用无效的单元格,第一行和最后一行必须被视为特殊情况。 如果你需要为所有这些单元格生成一个单一的Forumala,我认为应该可以使用OFFSET
结合MAX
, MIN
和ROW
来生成适当的范围,只需要一点点算术。
插入另一列D(稍后可以隐藏),如果正在分析,则等于家庭号码,如果不是,则为零。 D2的公式可以是=B2*C2
。 用这个公式填充列D.
然后,对于HH_ANALYSIS_FLAG列,可以计算D列中与B列中的家庭相匹配的值的数量。公式将如IF(COUNTIF(D:D,"="&B2)>0,1,0)
。
不过,我不确定这个方法对于50,000个帐号是否足够快。
ABCDE 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)
假定你的HOUSEHOLD_NUMBER列是列B:
=IF(SUMIF(B:B,C:C)>0,1,0)
应该这样做。
肯尼斯! 试试这个:
= IF(VLOOKUP(B2,$ B $ 2:$ C $ 9,2,0)= 1,1,0)
假设您的表从A1开始,这意味着Account_Number位于单元格A1中,而您的目标列“HH_ANALYSIS_FLAG”位于列D中。
希望这是有帮助的