【问题标题】:Updating Dynamic crosstab into fixed table将动态交叉表更新为固定表
【发布时间】:2021-10-23 22:28:26
【问题描述】:

我正在尝试自动生成根据有值的年份而变化的数据,并填充 Excel 表进行分析。我的 VBA 编码技能一般,所以我的目标是填充特定字段以减轻负担。我在十年内拉动销售额,它按零件号分组,年份是列,总销售额是行中的总和值,它看起来像这样:

part 2018 2020
ABC $2,000 $10,652

问题是每次运行的年份都不同,因此有些运行将有 2010、2012 年,其他运行 2017、2018、2019 年等。当我尝试使用通用更新(或附加)查询将此数据推送到标记为字段的字段时从 2010 年到 2021 年,任何时候一个字段不存在,它都会抛出一个错误,而不是仅仅忽略它。

使用上面的示例,此交叉表中只有 2 年的列。但我的查询有所有可能年份的更新,2010-2021。对于缺少的字段,我在更新或附加时尝试使用NZ([theData]![2019],"") 之类的措辞,希望如果该字段不存在,它只会输入空值,但当该字段不存在时它会出错。这有可能绕过吗?还是我需要构建一个 VBA 循环来检查表头值并将数据推送到表中的匹配字段中?

【问题讨论】:

  • 为什么需要这个提交到表?为什么不导出查询?否则,是的,需要 VBA 操作记录集。当您有一些特定问题的代码时,请发布带有详细信息的问题。
  • 因为最终这些数据必须输入到 Excel 表格中。我最初的目标是快速导出,其中所有年份的所有销售数据每次都填充到相同的列中。如果第一次运行只有 2 年,第二次运行有 6 年,如果我只是盲目地导出数据,就会将数据输入错误的位置。这就是为什么它需要首先进入一个已建立的表。或者我不得不花太多时间在这台大型机器上编写一个小齿轮,这看起来就是我必须要做的。我希望有一个我没有看到的简单解决方案。

标签: vba ms-access


【解决方案1】:

由于您没有提供您正在使用的 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 ;

最后一个查询用于将行转换为列。您可能需要从可从LightningGuide.net 下载的示例数据库中检查查询“K_Rows_into_columns_1”。

d) 每当您需要信息时,运行删除查询,然后运行插入查询,然后使用功能区“外部数据”中的命令“Excel”将表 tblYearlySales 导出为 Excel 文件。

【讨论】:

    猜你喜欢
    • 2012-02-17
    • 2012-08-12
    • 2012-10-04
    • 2016-08-16
    • 1970-01-01
    • 2013-09-17
    • 2014-12-17
    • 2015-02-18
    相关资源
    最近更新 更多