所以我有以下要求:
表1
xxxx
YYYY
ZZZZ
表2
1994 xxx
1995 xxx
1996 xxx
1994 YYY
1995 YYY
1996 YYY
1994 ZZZ
1995 ZZZ
1996 ZZZ
本質上,我想要的是從工作表 1 複製公司名稱,並將其貼到每個給定年份,並對近 600 家公司重複。
是否有任何公式或 VBA 程式碼可以完成此任務?我真的很感激任何幫助
答案1
選擇您的公司清單並使用資料>取得和轉換資料>從表/範圍。
這將開啟 Power Query 編輯器。你會看到這樣的東西:
使用主頁>關閉並加載
現在我們將花點時間建立起始年和結束年之間的動態年份清單。如果您想稍後更改開始和結束,這將很有用。
在工作簿的單獨儲存格中輸入起始年份和結束年份。
選擇起始年份,然後透過在名稱方塊中鍵入 start_year 之類的名稱來命名儲存格:
命名儲存格後,選擇儲存格並使用資料>取得和轉換資料>來自表/範圍
Power Query 編輯器開啟並顯示列標題為 Column1 的單一儲存格後,以滑鼠右鍵按一下該儲存格並選擇「向下鑽取」:
如果展開左側的「查詢」窗格,您將看到以下內容:
使用“主頁”>“關閉並載入到”並選擇“僅建立連接”。
在年底重複此操作,這樣您就得到了:
再次,關閉並加載並僅建立連接。
現在,在 Excel 中,按一下資料>查詢和連線。你應該看到這個:
我的顯示“已載入 50 行”,因為我建立了包含 50 個公司名稱的虛擬資料。你的可能會有所不同。
右鍵單擊 Table1 查詢並選擇“編輯”。這將再次開啟 Power Query 編輯器。
現在轉到主頁>進階編輯器。它應該看起來像這樣:
我們將添加一些程式碼來建立該年份列表。
將此行加入第二行:
years = List.Numbers(start_year,end_year),
像這樣:
現在點選“完成”。看起來一切都沒有改變,但不用擔心。
使用“新增列”>“自訂列”並如下配置:
當您按一下「確定」時,您將看到以下內容:
點擊年份列頂部的雙箭頭,然後點擊“擴展至新行”
現在您將看到公司和年份的每個組合都有一行:
使用“主頁”>“關閉並加載”將其放回您的工作簿中。
如果您的公司清單或開始和/或結束年份發生變化,您只需更改來源資料並刷新此查詢即可。
答案2
這是一件非常容易做到的事。有很多方法,但以下是符合您剛才描述的最簡單的方法。
總共有多少個公司名稱。 (只需按Ctrl-Down Arrow
它們的列,看看最後一行是哪一行。將第一行與其中一個一起使用,看看有多少存在。為了這個答案,假設它是 587。)
在另一張工作表上,選擇一列並輸入第一年,然後向下複製以填入總共 587 個儲存格。假設您從 A1 開始並在 A587 結束。在儲存格 A588 中,輸入公式=A1+1
。將其複製下來以填充另外 587 個單元格。複製該儲存格,然後反白該儲存格以及其餘 587 個儲存格 (A588:A1174) 並貼上。現在,所有 587 個單元格都突出顯示並填充了公式。複製該區塊並按Ctrl-Down Arrow
,然後Down Arrow
再次按以到達下一個空白儲存格 (A1175)。
現在再次貼上,然後向下移動到下一個空白單元格。繼續,直到您擁有您想要列出的所有年份的 587 個單元格。反白整列條目(可能是 30 年,因此您突出顯示儲存格 A1:A17610)。複製整堆並將Paste|Special|Values
其全部更改為永久文字。
複製 587 公司名稱並將其貼上到 B1:B587 的下一列。然後轉到下一個空白儲存格 B588,輸入公式=B1
,然後複製該儲存格。移至 A 列並轉到最後一個填充的儲存格,或直接使用F5 GoTo
轉到儲存格 B17610(最後一個帶有年份的儲存格是 A17610,無論如何您確實希望位於 B 列中)。不管你怎麼做,都會到達B17610。按Shift-Up Arrow
覆蓋所有這些空白單元格(本身以及一直到 A588,這就是您將要到達的位置...可以貼上到 A588 上,因為它是相同的公式)。
突出顯示後,貼上。然後突出顯示所有 B 列單元格,就像對 A 列所做的那樣,然後複製並使Paste|Special|Values
它們也成為永久文字。
看起來只有一個小時,而且很麻煩。事實上,我預計最多 2 分鐘,即使你有些笨手笨腳的。如果你不這樣做……無論讀起來如何,在現實生活中它都很快。
完畢。