我正在嘗試自動生成根據存在值的年份而變化的資料并填充 Excel 表進行分析。我的 VBA 編碼技能一般,所以我的目標是填充特定領域以減輕負擔。我在十年期間拉動銷售額,其中按零件編號分組,年份是列,總銷售額是行中的總和值,它看起來像這樣:
| 部分 | 2018年 | 2020年 |
|---|---|---|
| 美國廣播公司 | 2,000 美元 | 10,652 美元 |
問題是每次運行的年份都不同,所以有些運行將有 2010 年、2012 年、其他 2017 年、2018 年、2019 年等。當我嘗試通用更新(或追加)查詢將這些資料推送到按年份標記的欄位時2010 年到 2021 年,任何時候一個欄位不存在,它都會拋出一個錯誤而不是忽略它。
使用上面的示例,此交叉表中只有 2 年的列。但我的查詢有所有可能年份的更新,2010-2021。對于缺失的欄位,我嘗試過像NZ([theData]![2019],"")更新或附加時這樣的措辭,希望如果該欄位不存在它只會拋出空值,但是當該欄位不存在時它會出錯。這可以繞過嗎?或者我是否需要構建一個 VBA 回圈來檢查標頭值并將資料推送到表中的匹配欄位中?
uj5u.com熱心網友回復:
由于您沒有提供正在使用的 SQL 代碼,因此不清楚您在做什么。如果您發布源表和您嘗試過的 SQL 代碼,回答起來會更容易。根據您提供的資訊,我認為可以解決您的問題的是:
a) 在您的 Access 資料庫中創建一個表(例如,tblYearlySales)。此表是將自動引入資訊的位置,然后您可以將其匯出為 Excel 檔案,您可以在其中使用 Excel 處理資訊。此表應包含欄位“Part”、“2010”、“2011”、...、“2021”。
b) 創建洗掉查詢以洗掉表 tblYearlySales 中的所有資訊:
DELETE FROM tblYearlySales
c) 創建一個插入查詢,將您想要的資訊插入到表 tblYearlySales 中。這樣的插入查詢將是:
INSERT INTO tblYearlySales
SELECT Part
, Max(Iif(Year=2010, Sales, 0)) AS 2010
, Max(Iif(Year=2011, Sales, 0)) AS 2011
, Max(Iif(Year=2012, Sales, 0)) AS 2012
, Max(Iif(Year=2013, Sales, 0)) AS 2013
, Max(Iif(Year=2014, Sales, 0)) AS 2014
, Max(Iif(Year=2015, Sales, 0)) AS 2015
, Max(Iif(Year=2016, Sales, 0)) AS 2016
, Max(Iif(Year=2017, Sales, 0)) AS 2017
, Max(Iif(Year=2018, Sales, 0)) AS 2018
, Max(Iif(Year=2019, Sales, 0)) AS 2019
, Max(Iif(Year=2020, Sales, 0)) AS 2020
, Max(Iif(Year=2021, Sales, 0)) AS 2021
FROM Table_where_your_source_info_is
GROUP BY Part ;
最后一個 Query 用于將行轉換為列。您可能想從LightningGuide.net下載的示例資料庫中檢查查詢“K_Rows_into_columns_1” 。
d) 每當您需要資訊時,先運行洗掉查詢,然后運行插入查詢,然后使用功能區“外部資料”中的命令“Excel”將表 tblYearlySales 匯出為 Excel 檔案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/338770.html
上一篇:從單列中根據多個條件選擇多列
