我有一些無法再更改的資料,它在 gsheet 中看起來像這樣
| 日期 | 型別 | 環境 | 單元 | 名 | 姓 | 標簽 |
|---|---|---|---|---|---|---|
| 12/1/2021 | 活動一 | 1 | 2 | 約翰 | 美國能源部 | 標簽 1、標簽 2、標簽 3 |
| 12/1/2021 | 活動二 | 1 | 2 | 簡 | 美國能源部 | 標簽4、標簽5、標簽6 |
| 12/1/2021 | 活動二 | 1 | 2 | 凱倫 | 美國能源部 | 標簽5,標簽8 |
任何人都可以幫忙,這樣我就可以將它轉換成這樣,并在另一張紙上的資料透視表中使用它。
| 日期 | 型別 | 環境 | 單元 | 名 | 姓 | 標簽 |
|---|---|---|---|---|---|---|
| 12/1/2021 | 活動一 | 1 | 2 | 約翰 | 美國能源部 | 標簽1 |
| 12/1/2021 | 活動一 | 1 | 2 | 約翰 | 美國能源部 | 標簽2 |
| 12/1/2021 | 活動一 | 1 | 2 | 約翰 | 美國能源部 | 標簽3 |
| 12/1/2021 | 活動二 | 1 | 2 | 簡 | 美國能源部 | 標簽4 |
| 12/1/2021 | 活動二 | 1 | 2 | 簡 | 美國能源部 | 標簽5 |
| 12/1/2021 | 活動二 | 1 | 2 | 簡 | 美國能源部 | 標簽6 |
| 12/1/2021 | 活動二 | 1 | 2 | 凱倫 | 美國能源部 | 標簽5 |
| 12/1/2021 | 活動二 | 1 | 2 | 凱倫 | 美國能源部 | 標簽8 |
uj5u.com熱心網友回復:
假設原始資料位于一個名為的作業表中,Sheet1并且您發布的資料中顯示的標題運行A1:G1。在新作業表中,將此公式放在單元格 A1 中:
=ArrayFormula({REGEXREPLACE(Sheet1!A1:G1, "s$", ""); SPLIT(SUBSTITUTE(QUERY(FLATTEN(TRANSPOSE(QUERY(TRANSPOSE(FILTER(Sheet1!A2:F&"~", Sheet1!A2:A<>"")),,COLUMNS(Sheet1!A:F))) & SPLIT(FILTER(Sheet1!G2:G, Sheet1!A2:A<>""), ",")), "Select * WHERE Col1 Is Not Null"), "~ ", "~"), "~", 1, 0)})
簡而言之,這個公式將前六列中的所有內容粉碎成一個由任意描述符分隔的長字串(我選擇了波浪號:)~。然后將這些字串與SPLIT第七列的每個元素連接起來,將FLATTEN所有這些元素合并到一列中,QUERY取出空白行,然后SPLIT再次將波浪號符號放入單獨的單元格中。
第一部分 — REGEXREPLACE(Sheet1!A1:G1, "s$", "");— 使用原始標題,但用于REGEXREPLACE去掉原始標題 'Tags' 上的最后一個 's'。
該框架的=ArrayFormula({ ; })意思是(用簡單的英語):“我們將處理許多單元,而不僅僅是一個。我們將在記憶體中形成一個臨時虛擬陣列。我們希望分號之前的部分位于該部分的頂部在分號之后。”
在新作業表中,您需要完全選擇 Col A 并將其格式化為您喜歡的日期格式,因為日期最初將以原始格式顯示(即,自 12 月 30 日的原始日期以來的天數) , 1899)。
如果此公式不起作用,很可能是因為您所在的區域使用分號代替逗號。在這種情況下,試試這個版本:
=ArrayFormula({REGEXREPLACE(Sheet1!A1:G1; "s$"; ""); SPLIT(SUBSTITUTE(QUERY(FLATTEN(TRANSPOSE(QUERY(TRANSPOSE(FILTER(Sheet1!A2:F&"~"; Sheet1!A2:A<>""));;COLUMNS(Sheet1!A:F))) & SPLIT(FILTER(Sheet1!G2:G; Sheet1!A2:A<>""); ",")); "Select * WHERE Col1 Is Not Null"); "~ "; "~"); "~"; 1; 0)})
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/400882.html
標籤:谷歌表格
