您是否正在寻找这样的输出:
让我们知道这是否有帮助。
主要公式有点暴力,但非常简单。
但它可能会出现问题,具体取决于您的数据中可能有多少行或列。
=TRANSPOSE(QUERY({TRANSPOSE(A1:C6)},"
where Col1 = '" & F1 & "'
or Col2 = '" & F1 & "'
or Col3 = '" & F1 & "'
or Col4 = '" & F1 & "'
or Col5 = '" & F1 & "'
or Col6 = '" & F1 & "' ",0))
更新:
要将所有结果放在一个列中,有多种选择。您还没有说是否需要唯一值或名称排序,所以我将忽略这些方面,并将结果垂直堆叠。
一种简单的方法是使用未记录的函数FLATTEN,在某些时候可能会或可能不会从表格中删除。
添加到我的原始公式中,得到:
=FLATTEN(TRANSPOSE(QUERY({TRANSPOSE(A1:C6)},"
where Col1 = '" & F1 & "'
or Col2 = '" & F1 & "'
or Col3 = '" & F1 & "'
or Col4 = '" & F1 & "'
or Col5 = '" & F1 & "'
or Col6 = '" & F1 & "' ",0)))
但您可能希望一列堆叠在另一列之上,而不是合并。在这种情况下,您可以尝试这个丑陋的公式,它需要多次重复查询,以检查输出中有多少列。如果您必须这样做,我建议将查询结果保存在辅助范围中,或者提交一个新的更具体的问题:
={query({TRANSPOSE(QUERY({TRANSPOSE(A1:C6)},"
where Col1 = '" & F1 & "'
or Col2 = '" & F1 & "'
or Col3 = '" & F1 & "'
or Col4 = '" & F1 & "'
or Col5 = '" & F1 & "'
or Col6 = '" & F1 & "' ",0))},"select Col1 ",0);
if(columns(TRANSPOSE(QUERY({TRANSPOSE(A1:C6)},"
where Col1 = '" & F1 & "'
or Col2 = '" & F1 & "'
or Col3 = '" & F1 & "'
or Col4 = '" & F1 & "'
or Col5 = '" & F1 & "'
or Col6 = '" & F1 & "' ",0)))>1,
query({TRANSPOSE(QUERY({TRANSPOSE(A1:C6)},"
where Col1 = '" & F1 & "'
or Col2 = '" & F1 & "'
or Col3 = '" & F1 & "'
or Col4 = '" & F1 & "'
or Col5 = '" & F1 & "'
or Col6 = '" & F1 & "' ",0))},"select Col2 ",0),
"");
if(columns(TRANSPOSE(QUERY({TRANSPOSE(A1:C6)},"
where Col1 = '" & F1 & "'
or Col2 = '" & F1 & "'
or Col3 = '" & F1 & "'
or Col4 = '" & F1 & "'
or Col5 = '" & F1 & "'
or Col6 = '" & F1 & "' ",0)))>2,
query({TRANSPOSE(QUERY({TRANSPOSE(A1:C6)},"
where Col1 = '" & F1 & "'
or Col2 = '" & F1 & "'
or Col3 = '" & F1 & "'
or Col4 = '" & F1 & "'
or Col5 = '" & F1 & "'
or Col6 = '" & F1 & "' ",0))},"select Col3 ",0),
"")}