2014-03-28 39 views
0

我有5列數字,我想按行排序到另一組列。我想我需要使用small()(例如,小(a2:e2,1)用於f2;小(a2:e2,2)用於g2等等)。有沒有爲下一行迭代這個;如果可能只使用本地谷歌電子表格公式?在arrayformula中的小(谷歌電子表格)

在此先感謝

回答

0

我是能夠使周圍的臨時工作,但我不得不使用3列作弊。它現在看起來不錯,但我想這對於真正龐大的數字會很麻煩。

下面是參考樣品片材:https://docs.google.com/spreadsheets/d/1MQTP2XkRsPRAnPQ5wLhkR8JoNVY6YOExVlOkkX8UeRs/edit#gid=0

原始數據是A3:電子

第一作弊柱(G3:G)簡單地創建數字從1到最大數目發現了一個柱在源數據中。 1-9更改爲01-09以便於搜索。 「#」 的,然後加入最終,這將稍後方便的:

  • 作弊列1 =過濾器(如果(行(A:A)= MAX(A:E)+ 1,「#」,文本(行(A:A),"00")),行(A:A)< = MAX(A:E)+1)

第二作弊柱(H3:H)的每一行組合成一個字符串由 「 - 」 分隔用 「#」 標記:

  • 作弊列2 =過濾器(文本(A3:A,"00")&「 - 」&文本(B3:B,"00")&「 - 」 &文本(C3:C,"00")& "" &文本(D3:d,"00")& "" &文本(E3:E,"00")&「#」,A3:甲<> "")

最後一個作弊列(I3:I)通過查找作弊列中從01到最大數字的每個數字,然後使用「#」字符排序(這確保每行仍然有#結束標記)。 「查找」將返回每個數字的「位置」,如果沒有找到,則返回錯誤。通過使用「if」,我們可以使「find」返回實際的數字或「」。 (濾波器(G3:G,G3:G <>「」)),H3:H),「」),轉置(濾波器(G3:G,G3: ģ<> "")),"")),A3:甲<> "")

因爲有從作弊列編號1.爲了防止這種情況的上述式生成那麼多的列,一個""被添加到每個數字,然後使用「連接」將所有內容組合成一個大量字符串,每個字符串用「#」分隔。然後使用「#」標記分割字符串。

  • 作弊列3 =轉置(分裂(串連(過濾器(ARRAYFORMULA(如果(IFERROR(找到(轉置(過濾器(G3:G,G3:ģ<> "")),H3:H),"") ,"" &轉置(過濾器(G3:G,G3:ģ<> "")),"")),A3:甲<> "")),「#」))

每個數字是然後通過使用mid()分隔成每個相應的列。

  • 小1 =過濾器(MID(I3:I,2,2)* 1,A3:甲<> "")
  • 小2 =過濾器(MID(I3:I,5,2)* 1,A3:甲<> "")
  • 小3 =過濾器(MID(I3:I,8,2)* 1,A3:甲<> "")
  • 小4 =過濾器(MID(I3:我,11,2)* 1,A3:甲<> "")
  • 小5 =過濾器(MID(I3:I,14,2)* 1,A3:甲<> "")

請注意,上面的公式僅適用於數字1-99。對於較大的數字,Text()公式應該有更多的零來對應最大數字的位數。 Mid()公式也應相應調整。

我想強調的是,我離電子表格專家很遠,而且這個解決方案非常「不優化」。它需要幾個作弊列;第一個甚至比原始數據更多的行。如果有人能幫我擺脫作弊列(或至少第一個),我將非常感激。

0

如何使用SMALL就像你在你的問題中提到的?

=small($A3:$E3,column()-columns($A3:$G3)) 

您將需要相應地更改範圍。最後一個$G$3是放置公式的單元格之前的單元格。

Sample