[英]one-to-many reporting between sheets in Google Spreadsheets
我正在嘗試將“一對多關系”(如在數據庫中)從一張工作表復制到另一張工作表(在同一個電子表格內)。
我已經對類似主題進行了研究,但似乎沒有解決方案涵蓋我。
本質上,這可以在原則上描述如下:
關於此的一些免費說明:
所有這一切的一個例子是二級表格每一行的 HTML 代碼(標簽)內每個元素的幾個圖像的網址,報告給初級表格中的相應單元格。
直到現在,我在 Ted Juch 的博客上進行了一些討論后找到了一個解決方案,並為此目的對公共電子表格做出了貢獻,其中使用了以下公式:
ArrayFormula(TRANSPOSE(SPLIT(CONCATENATE(REPT(TRANSPOSE('Secondary Table'!B1:B&", ");(A1:A=TRANSPOSE('Secondary Table'!A1:A))*(LEN(A1:A) >0))&REPT(CHAR(9)&" ""&CHAR(9);TRANSPOSE(ROW('Secondary Table'!A1:A))=ROWS('Secondary Table'!A1:A)));", " &CHAR(9);0)))
上面的公式是我認為來自 TC Adam 的建議,雖然我似乎已經了解它的工作原理,但我幾乎無法維護它或將其修改為不同的情況。 在最后一個示例中,它返回“超出范圍”的錯誤並且無法弄清楚原因。
此后我對公式所做的唯一修改是在初始數組公式中添加一個“if (row(A1:A)=1;”Column Header”; FORMULA)”,結果為:
ArrayFormula(IF(ROW(A1:A)=1;"Column Header"; TRANSPOSE(SPLIT(CONCATENATE(REPT(TRANSPOSE('Secondary Table'!B1:B&", ");(A1:A=TRANSPOSE('Secondary Table'!A1:A))*(LEN(A1:A)>0))&REPT(CHAR(9)&" "&CHAR(9);TRANSPOSE(ROW('Secondary Table'!A1:A))=ROWS ('輔助表'!A1:A)));", "&CHAR(9);0))))
我懷疑大型數據集是否會產生如此大的數組,無法在 Google 電子表格的限制下正確處理,從而導致問題,或者是我弄亂了試圖調整它的公式。
我還嘗試使用 ArrayLib 庫創建一個自定義函數,該庫具有一個名為 ArrayLib.filterByText 的類似函數,但它只運行了幾行,直到收到“錯誤:服務超時”消息。
我應該嘗試實現查詢方法嗎? 有人可以幫忙嗎?
這是我為此找到的“最佳”解決方案(歸功於亞歷山大·伊萬諾夫)
請注意,一對多關系不是以規范化的方式保存,而是以序列化的方式保存,但它確實是開箱即用的,並且可能是一個更完整和徹底的解決方案的靈感。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.