我有5列数字,我想将每行排序到另一组列中。我想我需要使用small()(例如小(a2:e2,1)用于f2;小(a2:e2,2)用于g2,依此类推)。有没有为下一行迭代这个;如果可能,只使用原生谷歌电子表格公式?
提前致谢
答案 0 :(得分:0)
我能够做一个临时工作,但我不得不使用3个作弊列。它现在看起来不错,但我想这对于真正庞大的数字来说会很麻烦。
以下是参考样本表:https://docs.google.com/spreadsheets/d/1MQTP2XkRsPRAnPQ5wLhkR8JoNVY6YOExVlOkkX8UeRs/edit#gid=0
原始数据在A3:E
中第一个作弊列(G3:G)只创建一个数字列,从1到源数据中找到的最大数字。 1-9更改为01-09以便于搜索。然后在最后添加“#” - 这将在以后方便使用:
第二个作弊栏(H3:H)将每一行组合成一个由“ - ”分隔的字符串和一个“#”标记:
最后一个作弊栏(I3:I)通过查找从01到最大数字的作弊栏中的每个数字来排序每一行(来自作弊列2),然后是“#”字符(这确保每行仍然是有#end标记)。 “查找”将返回每个数字的“位置”或错误(如果找不到)。通过使用“if”,我们可以使“find”返回实际数字或“”。
= filter(arrayformula(if(iferror(find(transpose(G3:G,G3:G<"“)),H3:H),”“),转置(过滤器(G3:G,G3: G<> "")),"")),A3:A<> "")
上面的公式创建了与作弊列1中的数字一样多的列。为了防止这种情况,每个数字都加上“ - ”,然后使用“连接”将所有内容组合成一个大型字符串,每个字符串由“#”。然后使用“#”标记分割字符串。
然后使用mid()将每个数字分成每个相应的列。
请注意,上面的公式仅适用于数字1-99。对于较大的数字,Text()公式应该具有更多的零,以对应于最大数字的位数。 Mid()公式也应相应调整。
我想强调的是,我远非电子表格专家,而且这种解决方案非常“未经优化”。它需要几个作弊栏;第一个甚至比原始数据有更多的行。如果有人能帮助我摆脱作弊栏(或至少是第一个),我将非常感激。
答案 1 :(得分:0)
如您在问题中提到的那样使用SMALL
怎么样?
=small($A3:$E3,column()-columns($A3:$G3))
您需要相应地更改范围。最后一个$G$3
是放置公式的单元格之前的单元格。