我從網路資料庫下載了一個具有可變格式的資料集。目標是將所有資料放入行中,以便對其進行排序並可能轉換為 CSV-KMZ(KML) 檔案。取消合併儲存格後,資料格式如下這。
我發現的強力解決方案涉及使用='cell number'
在右側的儲存格中(像這樣。),然後刪除所有空白儲存格以合併同一行中的所有資料(例子在這裡)。從這裡,我只需選擇並向下拖曳即可將該儲存格數組複製到較低的儲存格中。當遇到具有多個站點的責任方條目時(如第一張圖片所示),問題就會出現,因為它們會消除間距,而這需要大量的複製和貼上來解決這些問題。
因為這個資料集下降到了 10,000 行以上,而且可能還會有更多這樣的資料集,我希望這裡的一些優秀人才能夠想出另一種解決方案。感謝所有思考這個問題的人!
答案1
圖中的資料佈局範例是您成功的關鍵。這是特徵鮮明數據。這意味著它遵循固定的模式,而不是到處都是。這意味著您可以編寫簡單、直接的公式來收集其中的每一部分。
當我在單擊之前閱讀導入內容時,我以為我會看到到處都是數據。例如,{City} 可能位於單元格 D3、E3 或 F3 中,也許其他地方都類似,或者可能與 {State} 組合,並且每個記錄都不同:某些記錄未組合,連續六個記錄與E3 中的{City},然後F3 中的一對,諸如此類。
你不會有那種缺陷!
您唯一的困難在於站點資訊可能包含多個站點,而不是每個記錄僅包含一個站點。但這是一個小複雜,可以用兩件事來解決:
1) 判斷每筆記錄可能有多少個站點。您必須已經考慮到這一點,因為您計劃將結果佈置在每個 RP 的單行中,因此請使用它。 2) 使用 IF() 函數來測試特定的數據,這將告訴您是否要提取站點信息,或開始新記錄。
第二個似乎有點不對勁,因為你將在兩個地方做出決定,可以這麼說,而不僅僅是一個地方。
一旦決定,輸出行中的儲存格可以具有更簡單的公式來測試決定儲存格的內容,並沿著行向下傳遞。
你做什麼工作?首先,我假設粗體項目是為了清晰起見而添加的,不需要提取。 (如果這樣做,請以相同的方式進行操作。)我還計劃一個簡單的輸出,其中將包含一行數據,然後是一系列「空」行,然後是另一行數據,依此類推。最後的想法是複製並貼上|特殊|值,然後排序並刪除最後的一大堆「空」行。一個人可以變得更漂亮,但這在晚上 11:30 是不可能的…
要提取主要資訊「RP」資料(我將使用從 T2 開始的想法,並假設「派對 ID 是「RP#」。),您需要一些資料來固定並關聯尋找其他部分的位置看起來非常適合,所以單元格T2 應該有:
= C1
現在使用 OFFSET() 來尋找所有剩餘的 RP 資料。但請記住,輸出中的每一行都必須查看它是否應該收集資料。因此,您需要將其包裝在 IF() 中以查看該行是否獲取資料:
= IF( C1 = "", "", C1)
這將用一些 RP# 填充 T2。在T3到T7中,都會顯示“”。繼續前往U2。輸入以下公式:
= IF( C1="", "", OFFSET( C1, 0, 2 ) )
如果 C1 有 RP#,那麼您將找到向下 0 行、向右 2 列的儲存格的值。如果沒有,您將在 U2 中獲得「」(並且對於所有尋求非站點資料的列,您將繼續得到這樣的結果)。
繼續。只需根據需要改變兩個值(行是第一個,列是第二個)即可相對於 C1 定位每個部分。 Thant 處理所有尋求的非站點資料。 (有趣的是,要記住並且接下來要使用的是,偏移量可以是負值,因此您可以使用 OFFSET() 向左、向上、向右和向下查看。)
對於儲存格 AB2,輸入 +4 行的偏移量(因此向下)和-1列(所以左邊)。所以簡單的 IF() 測試,然後是偏移量。考慮到數據似乎不可能,因為每個 RP 至少有一個站點,但如果可能沒有,請添加到 IF() 測試:
= IF( OR( C1="", OFFSET( C1, 4, -1 ) = "" ), "", OFFSET( C1, 4, -1 ) )
向右移動收集站點數據,返回簡單的 IF() 測試,但使用 AB2 而不是 C1。 (如果C1 不是RP#,則您有一個“空”AB2,因此“空”AB2 意味著C1 也是“空”,因此無需每次都進行測試。)收集該網站的所有數據,就像您對RP所做的那樣數據。
現在問題的關鍵是:是否有第二個站點或新記錄的開始?該記錄的 RP# 下 7 行、同一列的儲存格要不是新的 RP#,就是空白。可以像以前一樣測試“空白”。假設 AK2 是第二個站點的資料應該開始的地方。只需測試該單元格是否為空白。如果為空,則存在第二個站點,您可以按照與上面相同的方式找到其資料。使用:
= IF( OR( C1="", OFFSET( C1, 7, 0 ) = "" ), "", OFFSET( C1, 7, -1 ) )
它取得網站#(如果存在)或「」。與第一個站點的公式相同,只是更改行偏移(列偏移將相同)。如果根本沒有網站信息,請修改它以同時測試 AB2 的“”,這樣如果它是“空”,“”結果將從這裡向右波動。
對您認為可能的盡可能多的網站資料集執行此操作。也許再加上一兩個,嗯?
現在存在網站資料的「另一半」:我們移至第 3 行和儲存格 T3。將第 2 行的所有儲存格複製到第 15 行。然後數據再次出現。
由於 T8 不會是“”,因此它右側的行將填充資料。耶!
您可能會認為真實網站集右側的網站儲存格可能會出現奇怪或令人困惑的條目,因為它們會向下讀取下一筆記錄,或兩筆或四筆記錄來取得資料。但是,首先檢查它們是否有任何原因,並導致(擔心是虛假的)站點 # 的“”,然後向右產生“”條目,而不是讀取其他記錄的資料。不用擔心。
複製並貼上您擁有的所有資料行,或者您可以使用的盡可能多的資料行(請記住,您不僅可以讓您的機器追蹤這10,000 行中的所有這些公式,還可以複製並貼上它們的值同時)。假設這裡沒有問題,但如果有,您必須以 1,000 行為一組進行管理,或採取任何可能適合您的方式。
完成所有計算後,複製輸出單元格並將|特殊|值貼到...其他地方,例如第二個工作表。 (此時,如果考慮機器功率,請刪除除第一對之外的所有公式行。)
在另一張工作表上,您可以對輸出執行任何操作,而不會影響那些公式提取儲存格或來源資料。
一旦進入第二張紙,您就只剩下一個問題了:接下來您將對輸出進行排序。有時需要原始資料順序,但它不是 Excel 會產生的排序順序。如果是這種情況,請在左側插入一列,並使用順序數字列表隨意填充它。它只需是“常數”而不是公式,因此由於公式在排序後重新計算自身而不會發生任何變化...
好的,是時候擺脫所有這些“空”行並只保留一組緊湊的資料行了。將資料排序(如果您需要或想要的話,也可以對編號列進行排序)。像往常一樣從低到高進行操作,以便“空”行出現在底部。找到第一行“空”行。有很多方法可以做到這一點...滾動,比如說...或者也許首先轉到任何空行並將“zzzzzzzzzzzzzz”放入其第一個(最左邊)單元格中,這樣它將排序到資料的末尾,這將使其成為所有「空」行之前的第一行。到達第一行「空」的第一個儲存格後,按 Ctrl-Shift-End 以反白顯示您需要取出的所有垃圾。使用刪除鍵清除內容。
現在您的資料行都在一起了,沒有虛假的非空行來幹擾您對資料的使用,您就可以開始了。處理它,或將其複製並貼上到最終的休息位置(可能在其他電子表格中),然後進城!
順便說一下,施工非常簡單,而且一點也不花時間。一旦完成,只要資料不移動,它就永遠完成。你會知道,網站發生了變化,軟體得到了升級,全新的專欄也改變了一切,但是當你慢慢升級你的初始工作時,有很多簡單的方法可以解決這些問題。
一旦建置完成,資料就會在載入時立即讀取,然後您只需執行一次複製和貼上、排序、刪除(所有這些都只需按鍵,一分鐘,字面上,而不是幾個小時),然後就完成了。我提到這一點是因為,正如您在問題中提出的那樣,我相信您可能會覺得很難相信,但我在您的位置上用蠻力解決了問題,但在幾個小時的令人討厭、在殘酷的艱難過程中,錯誤必須透過這些錯誤來消除噸、滑鼠滑動等,現在實際上將是一分鐘。享受不再偷走你的生活!