【问题标题】:Excel vb project-best practiceExcel vb项目-最佳实践
【发布时间】:2012-05-22 15:39:42
【问题描述】:

我不是 vb 开发人员,对 excel 也不是很熟悉。无论如何,我有一个项目要使用 MS Excel 完成(不能使用访问)。 系统是为需要将年度报告中的数据输入系统的公司提供比率分析(以及其他一些分析)。然后根据几个报告数据,我可以得出图表和所有其他信息。

我的问题 现在我可以将数据存储在单个工作表中,就像使用 is 作为数据库一样。会是这样的

CompanyName     Year     Data1     Data2    Data3...

此处的 CompanyName 可以重复,因为可以输入许多年数据。如果我使用这种方法 每次获取公司数据时,我都必须在工作表中搜索相关行,并在读取这些行并生成最终结果时将大量数据保存在数组中。

或者我可以为每个公司使用单独的工作表。然后我只需要搜索相关的工作表名称并在该工作表中轻松执行操作。

那么最好的方法是什么? 谢谢

【问题讨论】:

  • 无论哪种方式都有效。 IMO 您可以创建一个已定义的范围(或多个)并针对它发出 SQL,就像它是 Access 表一样。我支持将所有类似的数据保存在同一个工作表上,即使对于不同的公司也是如此;但这只是我的 2 美分。您可以创建一个支点来分离信息并根据需要对其进行切片/切块。
  • 感谢 xQbert。不知道可以访问SQL。必须尝试一下……现在你给了我一个新词。 “枢轴”.. 必须搜索.. 无论如何谢谢。
  • @xQBert 这看起来像是对我的回答,是吗?
  • 谁能给我推荐一个 Excel 中 SQL 的好例子?...谢谢

标签: excel vba


【解决方案1】:

无论哪种方式都有效。 IMO 您可以创建一个已定义的范围(或多个)并针对它发出 SQL,就像它是 Access 表一样。我支持将所有类似的数据保存在同一个工作表上,即使对于不同的公司也是如此;但这只是我的 2 美分。您可以创建一个枢轴来分离信息并根据需要对其进行切片/切块

因为有人喜欢评论作为答案:...

【讨论】:

  • +1 很棒的建议,我同意将所有数据保存在同一张纸上,这样更容易旋转。只是给 OP 备注一下 SQL,不要尝试在打开的工作簿中从打开的工作簿运行 SQL,因为存在内存泄漏错误,您需要从另一个工作簿运行它。
【解决方案2】:

仅使用公式和 Excel 函数来完成其中的一些操作可能会更简单。基本方法是将数据保存在一张纸上,并在公司内部按年份排序,以便将公司的所有年份组合在一起。然后使用过滤器创建唯一公司列表。
每次添加新数据时,这些步骤都会重复。
然后为每个公司创建 2 个公式:第一个使用 MATCH 查找包含公司名称的第一行,第二个使用 COUNTIF 查找公司有多少行。
然后您可以使用 OFFSET(firstrow,ColumnIndex,NumberOfRows,1) (或类似的)来获取图表和比率分析等所需的数据范围。

【讨论】:

  • +1,我喜欢你的建议和 xQbert 的建议,在 excel 中使用公式通常比 code/sql 快得多
猜你喜欢
  • 1970-01-01
  • 2011-01-26
  • 1970-01-01
  • 2014-06-26
  • 2010-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
相关资源
最近更新 更多