Jef*_*son 6 excel excel-formula
我真的很难找到答案,因为在网上我真的只找到了这个问题的VBA解决方案,这不是我想要学习的方法.
问题
BLOOD NAME AGE GENDER
A David 18 Male
B Sarah 22 Female
O Lucy 32 Female
AB Steven 23 Male
O John 11 Male
B Mike 25 Male
AB Paul 24 Male
O Amy 23 Female
B Drake 22 Female
O Linda 11 Female
Run Code Online (Sandbox Code Playgroud)
非常简单地从上面的数据集我希望重新创建这个范围,但只过滤选择BLOOD TYPE O.
我的尝试
从VLookup表开始,然后在第一次出现O时停止.然后尝试将IF/THEN/ELSE逻辑合并到MATCH操作数中,试图找到输出到数组的行号.(不会发布我失败的尝试)我确实在网上发现了一个类似的问题,但他们通过手动使用ROW(A1),ROW(A2)等手动参考范围解决了它并不是我追求的.
真的想学习如何使用Excel公式进行这种类型的迭代选择.即使没有解决问题任何方向的资源,我可以了解更多关于这种类型的问题,仍然会受到赞赏.
这不使用数组公式,但使用辅助列.假设在col A到D中的数据,在E2中输入:
=IF(A2="O",1+MAX($E$1:E1),"")
Run Code Online (Sandbox Code Playgroud)
并复制下来:
每个O行都标有一个简单的顺序值.这使得通常的MATCH()/ INDEX()方法变得容易.
选择其他一些单元格并输入:
=IFERROR(INDEX(A:A,MATCH(ROWS($1:1),$E:$E,0)),"")
Run Code Online (Sandbox Code Playgroud)
并横向和向下复制此单元格:
这是一个带有数组公式的解决方案。它的计算速度非常慢,老实说 VBA 是一个更好的解决方案。输入公式后,您需要通过按“Ctrl + Shift + Enter”告诉 Excel 这些是数组公式,这将在方程周围添加 {}。最后,向下拖动数组公式,可以看到血型为“O”的第一个“X”结果:
“血液”的第一个单元格公式 --> 假设血液位于sheet1的A列中
{=IFERROR(INDEX(Sheet1!$A:$D,SMALL(IF(Sheet1!$A:$A="O",ROW(Sheet1!$A:$A)),ROW(1:1)),1,1),"")}
“名称”的第一个单元格公式 --> 假设名称位于sheet1的B列中
{=IFERROR(INDEX(Sheet1!$A:$D,SMALL(IF(Sheet1!$A:$A="O",ROW(Sheet1!$A:$A)),ROW(1:1)),2,1),"")}
“年龄”的第一个单元格公式 --> 假设年龄位于sheet1的c列中
{=IFERROR(INDEX(Sheet1!$A:$D,SMALL(IF(Sheet1!$A:$A="O",ROW(Sheet1!$A:$A)),ROW(1:1)),3,1),"")}
“性别”的第一个单元格公式 --> 假设性别位于sheet1的d列中
{=IFERROR(INDEX(Sheet1!$A:$D,SMALL(IF(Sheet1!$A:$A="O",ROW(Sheet1!$A:$A)),ROW(1:1)),4,1),"")}
结果:
BLOOD NAME AGE GENDER
O Lucy 32 Female
O John 11 Male
O Amy 23 Female
O Linda 11 Female
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
48722 次 |
| 最近记录: |