我确定我再次过度思考问题。我试图实现的只是一个结果数组,它只包含第一列中的数据唯一且已排序的行。
所以使用示例数组(比如表' DB')
A B C D
Me Pink Car Top
Me Blue Bike Middle
You Pink Car Bottom
They Pink Bike Bottom
You Blue Bike Top
Them Red Car Middle
Them Blue Car Top
Me Bike Middle
You Car
Us Top
另一张表中的结果(例如'结果')
A B C D
Me Pink Car Top
Them Red Car Middle
They Pink Bike Bottom
Us Top
You Pink Car Bottom
理想情况下,单个公式将进入结果!A1'。
暂时忽略SORT元素,这个大锤只适用于小数组
=filter(A1:D13,mmult((A1:D13=transpose(A1:D13))*(row(A1:D13)>=transpose(row(A1:D13))),row(A1:D13)^0)=1)
但是我的DB表是25,000+行(10+宽),所以似乎打破了GS 2m单元格限制(>矩阵1414 * 1414) - 大型数组产生了一个预期为21,414的列,实际列1和# 39;类型错误 - 而不是更有用'你打破了限制!'
请注意。到目前为止,上述解决方案效果最好,因为原始数据未排序。
我已经尝试了QUERY()但是再次打破了UNIQUE()元素。
=Query('DB!A2:I, "select * where Col1 matches '"&UNIQUE(DB!A2:A)&"'",0))
UNIQUE(...)在删除重键列中的重复项方面工作正常,但我如何将其余行表示为每个唯一条目?
独特({A1:A;过滤器({A1:D ...)})导致“未找到任何值”'
我希望一个简单的SORT(UNIQUE(...))是理想的解决方案,但似乎我看错了大海捞针。
我也尝试过以下结构,但是处理所花费的时间或我的语法都会导致任何结果瘫痪。
生成的数组btw将只是一个更合理的用户工作表的辅助数组,将在上面的结果上使用IMPORTRANGE()。
答案 0 :(得分:1)
这应该可以解决上述数据:
=sort(iferror(ARRAYFORMULA(VLOOKUP(UNIQUE(A2:A),A2:D,{1,2,3,4},false)),""),1,true)
给出以下结果:
Me Pink Car Top
Them Red Car Middle
They Pink Bike Bottom
Us Top
You Pink Car Bottom
如果您需要在vlookup中包含更多列,则可以像这样添加:
VLOOKUP(UNIQUE(A2:A),A2:(till which Column),{1,2,3,4,5... (Add your columns here)},false
但是,注意Vlookup将返回与A列中的匹配相对应的第一行。这意味着输入数组中数据的顺序很重要。
希望有所帮助!
答案 1 :(得分:0)