,看起來像這樣我的Excel數據:在Excel中執行行/列查找的更簡單方法,其中包含數據的列長度可變?
CHEVY_12 FORD_12 FORD_13 CHEVY_13
t1 462.0646058 5.507611655 887.4193417 197.1054415
t2 427.4865042 646.2186952 685.0746363
t3 175.4137935 73.77079157
列都是混出來的,列標頭不以任何有意義的順序。
我的目標是把數據從該表到一個表,以便它看起來像這樣:
<cell A1> Chevy Ford
2012 175.4137935 646.2186952
2013 73.77079157 887.4193417
然而,在數據表中,不是所有的列有t1
,t2
數據,和t3
,所以直接HLOOKUP
不起作用。基本上我試圖使用的過程分爲四個部分(所有公式假設我們正在談論的雪佛蘭2012細胞,但看到所有的血淋淋的細節附截圖):
創建列標題的將在數據表中查找。假設結果表格在單元格A1中有最左上角(如圖所示),我在第一個單元格(Chevy,2012)中使用了
=CONCATENATE(UPPER(B$1), "_", MID($A2, 3, 2))
,如圖所示。找到數據表中的列,其中包含與步驟1中構建的標題相匹配的標題。爲此,我只使用了
=MATCH(B3, $F$6:$I$6, 0)
。根據列標題查找每列中數據的最後一行。我爲此使用了
=MATCH(9E+307, OFFSET($E$6, 1, B9, MATCH(REPT("z", 255), $E$7:$E$9), 1))
。由於我不知道進入的最大行數(換句話說,有多少個t1
,t2
,t3
等等),我不得不在行標籤中找到包含文本的最後一行作爲好。我使用this link的公式來查找範圍內的最後一個數字(MATCH(9E+307,range)
)或文本(MATCH(REPT("z",255),range)
)。使用上面構建的塊在數據表中執行最後的
HLOOKUP
。
下面是最終電子表格:
數據表位於細胞$E$6:$I$9
,看起來像這樣:
有沒有一種簡單的方法執行這樣的查找?我結合所有這些作品爲一個公式,像這樣(的例子公式查找爲雪佛蘭,2012年數據):
=HLOOKUP(CONCATENATE(UPPER(B$2), "_", MID($A3, 3, 2)), $F$6:$I$9, MATCH(9E+307, OFFSET($E$6, 1, MATCH(CONCATENATE(UPPER(B$2), "_", MID($A3, 3, 2)), $F$6:$I$6, 0), MATCH(REPT("z", 255), $E$7:$E$9), 1)) + 1)
但很明顯,這是真的亂了,我想知道是否有一個更簡單辦法。我想用一個公式來做這件事(如最後一個例子),但最後一個公式會做我不喜歡的事情,比如執行兩次連接)。我正在使用Excel 2013.
如何只將數據清理到一個數據庫類型的格式?這是你可以使用的東西嗎? – nutsch
所以你現有的公式有效,但你想要的東西看起來更簡單?我必須同意@nutsch,如果你想公式更清潔,輸入數據必須更清潔。 –
@nutsch不幸的是沒有。我公司的許多不同團隊都使用這個數據集,並且他們依賴於* this *,而不是最佳格式。我無法僅僅爲了我的目的而改變數據集,因爲我冒着破壞公司其他許多流程的風險。 –