问题标签 [listobject]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
221 浏览

vba - 处理表格时如何编写清晰可维护的代码?

在我的项目中,我经常利用表和底层的 ListObjects 和 ListColumns。我喜欢它们,因为它们比裸 Range 对象更容易引用和更新。然而,我仍然没有找到一种健全且可维护的方法来处理由许多 ListColumns 组成的多个 ListObjects,并在项目中的所有 Worksheets 中被引用。

假设我有一个工作表(将(名称)属性设置为“WorksheetA”),其中包含带有少量列(称为 Column1、Column2、...、Column10)的表(称为 TableA)。

现在我想从另一个工作表的代码中引用其中一列。我可以这样做:

现在,直接使用字符串是一种不好的做法,因为它很难维护并且容易出错。

所以现在怎么办?

我可以创建专用模块来将我的字符串存储为常量。例如,名为“常量”的模块:

然后我的参考可以转换为:

但是,这种解决方案有一些缺点:

  1. 常量模块会随着每个表和列的添加而增长得快得离谱。
  2. 引用本身会增长并变得不那么可读。
  3. 所有工作簿中与表格相关的所有常量都被扔进一个巨大的坑中。

我可以在 WorksheetA 中存储常量,并通过以下公共函数使它们可用:

这个解决方案实际上解决了上面提到的所有三个问题,但它仍然有点“脏”和耗时,因为添加新表需要为每列创建一个函数。

你有更好的想法如何处理这个问题吗?

EDIT1(为清楚起见):假设用户不得更改任何名称(表名或列名)。如果用户这样做,那是他/她的责任。

EDIT2(为清楚起见):我仅将 Column7 用作列名作为示例。让我们假设列具有更有意义的名称。

0 投票
1 回答
24 浏览

object - 使用字符串变量命名列表对象

我已经对其进行了调试,这tblName正是我想要的,但是当我尝试设置的名称时,listobject我得到了一个错误。无论我如何设置,最后一行都会出错。我究竟做错了什么?

0 投票
1 回答
3484 浏览

c# - 向 Excel 表中添加行

我正在开发 Excel 2013/2015 VSTO 工作簿应用程序。从在 Windows 表单中输入的数据中,我想在我的一个工作表上的现有表中创建一条新记录。

如何使用 C# 和 VSTO 将新表行插入 Excel 表(不是简单的工作表数组)?

0 投票
1 回答
960 浏览

c# - 为什么此代码在写入的两行之间插入一个空白行(C# Excel 互操作)?

在我使用 Excel Interop 的 C# (.NET 4.5) Windows Forms 应用程序中,我从这里调整了代码(删除 Resharper 变灰的冗余内容,并在“丢失”参数之前添加“Type.”(并将它们的大小写更改为上):

ListObject 根据需要添加到第 4 行第 1 列(或“A”),并将“水果”写入单元格,但不是从第 5 行(应该是“Apple”)开始,而是从第 6 行开始,如你可以在这里看到(不需要的空白行突出显示):

在此处输入图像描述

它可能有(更多),但这可能至少是 ListObject 不知道要排序和过滤什么的部分原因,正如它在单击时提供的选项所证明的那样,如下所示:

在此处输入图像描述

为什么添加了第 5 行空白,我该如何防止呢?

0 投票
0 回答
275 浏览

c# - 如何在 C# Excel 互操作应用程序中指定 ListObject(排序/筛选)控件的单元格位置?

我在这里找到了如何将“ListObject”(我认为它是“排序/过滤控件”)添加到 Excel 电子表格。这是如何完成它的简单示例:

这会将“ListObject”直接放在填充的单元格上方,如下所示:

在此处输入图像描述

下面是下拉 ListObject 后的样子:

在此处输入图像描述

对于那种需求来说,这是很棒的功能(只需一点点代码就可以了很多)。但是,我有一张包含月份数据列的工作表,需要过滤掉选定的月份列(排序是不需要且不需要的)。以下是在生成报告时选择了几个月后的外观:

在此处输入图像描述

但是用户可以生成包含更少月份的报告(少至 1,多至 13),例如:

在此处输入图像描述

所以我想要一个“ListObject”,它的过滤操作范围跨越正在显示的月份的数据(多行,多列),用户可以取消选择某些月份,隐藏取消选择月份的整行[s] .

但是,使用此代码,它定义了所有月份数据的范围:

问题是多个 ListObject 直接挤到月份标题列上,将它们下方的行向下推,使行错位。不仅如此,他们提供的排序和过滤功能不符合我的严格标准。它不允许我过滤掉整个月份的列,而是这样做:

在此处输入图像描述

所以我想要的是:

这可能吗?如果是这样,我该如何完成它?

0 投票
1 回答
1074 浏览

excel - ListRows.Count 返回不一致的结果

我的两个 Excel 表位于我的项目中的两个不同工作表上,我遇到了一个奇怪的问题。我正在使用 VSTO,但 VBA 显示相同的结果:空表的行数在一种情况下为 0 行,在另一种情况下为 1 行(我假设插入行)。

设置

两个工作表:Sheet1、Sheet2
两个对应的命名 Excel 表:Sheet1Table、Sheet2Table

两个表都是空的,即它们有一个空行,即插入行,不能删除。

我运行以下代码来确定数据行的数量(即不包括标题行):

结果是numberOfListRows11 和numberOfListRows20,尽管结果(以正确者为准)应该相同。我比较了表格和工作表的属性,以及 Visual Studio 中的源文件,我没有发现任何差异。知道我应该寻找什么(哪个结果是正确的)?

0 投票
1 回答
1278 浏览

vba - 删除和添加表格 Excel VBA 中的项目

我在填表时遇到了问题。

更改组合框后,表格将填充数据。首先,我想删除表中的数据,然后添加我想要的数据。

我得到的是这个(这只是代码的一部分,集合已经充满了数据)

问题是它确实删除了表但没有添加任何内容。

如果我从代码中排除TableListObject.DataBodyRange.Delete它确实会用我想要的数据填充表格,但如果我更改组合框,新数据将添加到底部,而不是先清除表格。

0 投票
4 回答
2492 浏览

excel - 循环遍历 ListObject 中的行以删除它们非常慢

我有一个 ~500 行的 ListObject 表,我在一个命名范围内也有 4 个值。

对于 500 行,可能有 30 个唯一值重复(随机)出现,我想删除其值不在命名范围内的所有行。

我有以下工作,但运行速度比预期慢(大约 2 分钟):

我不确定是对工作表函数的依赖还是只是循环遍历减慢了它的行。

有没有办法过滤 listobject 并丢弃其余的?

我正在考虑只是在其上放置一个进度条,以便用户可以看到正在发生的事情......

0 投票
0 回答
57 浏览

c# - 将 ListObjects 写入特定格式文件

我想序列化一个列表并以特定方式将其写入文件,但我现在无法这样做,我的文件是这样的:

但我需要这样

我怎样才能使我的文件像第二种格式?这是我的序列化操作:

0 投票
1 回答
2908 浏览

excel - 从 ListObject 表的特定列中选择 SpecialCells(xlCellTypeVisible)

我试图仅将 ListObject 表的某些列的可见单元格放入范围对象中。

这似乎不起作用。

但是当我选择整个范围然后偏移第一列以选择其他 2 个所需的列时,这有效!

但我不能在公式中使用上述内容,因为我的公式仅引用了 listobject 中的 2 列,如下所示:

在此处输入图像描述

工作表上的 UDF 公式:

我将其用作:

正如您从图像中看到的那样,我只想要“品牌”和“索引”列中的可见单元格范围,而不是“COLUMN”列中的单元格。

所以我想要的可见范围是:

编辑@Jeeped:

如果我有一个从工作表单元格调用的 UDF 函数并传递了列 B 和 C 的 ListObject 范围(仅这些列而不是整个 databodyrange),那么我将如何找到 RngWrdLst 可见范围?

例如

从工作表调用:

函数定义:

顺便说一句,RngWrdLst 将包含 2 列 B 和 C。那么我如何修改您的代码并仅从函数中获取可见范围?