问题标签 [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.
vba - 处理表格时如何编写清晰可维护的代码?
在我的项目中,我经常利用表和底层的 ListObjects 和 ListColumns。我喜欢它们,因为它们比裸 Range 对象更容易引用和更新。然而,我仍然没有找到一种健全且可维护的方法来处理由许多 ListColumns 组成的多个 ListObjects,并在项目中的所有 Worksheets 中被引用。
假设我有一个工作表(将(名称)属性设置为“WorksheetA”),其中包含带有少量列(称为 Column1、Column2、...、Column10)的表(称为 TableA)。
现在我想从另一个工作表的代码中引用其中一列。我可以这样做:
现在,直接使用字符串是一种不好的做法,因为它很难维护并且容易出错。
所以现在怎么办?
我可以创建专用模块来将我的字符串存储为常量。例如,名为“常量”的模块:
然后我的参考可以转换为:
但是,这种解决方案有一些缺点:
- 常量模块会随着每个表和列的添加而增长得快得离谱。
- 引用本身会增长并变得不那么可读。
- 所有工作簿中与表格相关的所有常量都被扔进一个巨大的坑中。
我可以在 WorksheetA 中存储常量,并通过以下公共函数使它们可用:
这个解决方案实际上解决了上面提到的所有三个问题,但它仍然有点“脏”和耗时,因为添加新表需要为每列创建一个函数。
你有更好的想法如何处理这个问题吗?
EDIT1(为清楚起见):假设用户不得更改任何名称(表名或列名)。如果用户这样做,那是他/她的责任。
EDIT2(为清楚起见):我仅将 Column7 用作列名作为示例。让我们假设列具有更有意义的名称。
object - 使用字符串变量命名列表对象
我已经对其进行了调试,这tblName
正是我想要的,但是当我尝试设置的名称时,listobject
我得到了一个错误。无论我如何设置,最后一行都会出错。我究竟做错了什么?
c# - 向 Excel 表中添加行
我正在开发 Excel 2013/2015 VSTO 工作簿应用程序。从在 Windows 表单中输入的数据中,我想在我的一个工作表上的现有表中创建一条新记录。
如何使用 C# 和 VSTO 将新表行插入 Excel 表(不是简单的工作表数组)?
c# - 为什么此代码在写入的两行之间插入一个空白行(C# Excel 互操作)?
在我使用 Excel Interop 的 C# (.NET 4.5) Windows Forms 应用程序中,我从这里调整了代码(删除 Resharper 变灰的冗余内容,并在“丢失”参数之前添加“Type.”(并将它们的大小写更改为上):
ListObject 根据需要添加到第 4 行第 1 列(或“A”),并将“水果”写入单元格,但不是从第 5 行(应该是“Apple”)开始,而是从第 6 行开始,如你可以在这里看到(不需要的空白行突出显示):
它可能有(更多),但这可能至少是 ListObject 不知道要排序和过滤什么的部分原因,正如它在单击时提供的选项所证明的那样,如下所示:
为什么添加了第 5 行空白,我该如何防止呢?
c# - 如何在 C# Excel 互操作应用程序中指定 ListObject(排序/筛选)控件的单元格位置?
我在这里找到了如何将“ListObject”(我认为它是“排序/过滤控件”)添加到 Excel 电子表格。这是如何完成它的简单示例:
这会将“ListObject”直接放在填充的单元格上方,如下所示:
下面是下拉 ListObject 后的样子:
对于那种需求来说,这是很棒的功能(只需一点点代码就可以了很多)。但是,我有一张包含月份数据列的工作表,需要过滤掉选定的月份列(排序是不需要且不需要的)。以下是在生成报告时选择了几个月后的外观:
但是用户可以生成包含更少月份的报告(少至 1,多至 13),例如:
所以我想要一个“ListObject”,它的过滤操作范围跨越正在显示的月份的数据(多行,多列),用户可以取消选择某些月份,隐藏取消选择月份的整行[s] .
但是,使用此代码,它定义了所有月份数据的范围:
问题是多个 ListObject 直接挤到月份标题列上,将它们下方的行向下推,使行错位。不仅如此,他们提供的排序和过滤功能不符合我的严格标准。它不允许我过滤掉整个月份的列,而是这样做:
所以我想要的是:
这可能吗?如果是这样,我该如何完成它?
excel - ListRows.Count 返回不一致的结果
我的两个 Excel 表位于我的项目中的两个不同工作表上,我遇到了一个奇怪的问题。我正在使用 VSTO,但 VBA 显示相同的结果:空表的行数在一种情况下为 0 行,在另一种情况下为 1 行(我假设插入行)。
设置
两个工作表:Sheet1、Sheet2
两个对应的命名 Excel 表:Sheet1Table、Sheet2Table
两个表都是空的,即它们有一个空行,即插入行,不能删除。
我运行以下代码来确定数据行的数量(即不包括标题行):
和
结果是numberOfListRows1
1 和numberOfListRows2
0,尽管结果(以正确者为准)应该相同。我比较了表格和工作表的属性,以及 Visual Studio 中的源文件,我没有发现任何差异。知道我应该寻找什么(哪个结果是正确的)?
vba - 删除和添加表格 Excel VBA 中的项目
我在填表时遇到了问题。
更改组合框后,表格将填充数据。首先,我想删除表中的数据,然后添加我想要的数据。
我得到的是这个(这只是代码的一部分,集合已经充满了数据)
问题是它确实删除了表但没有添加任何内容。
如果我从代码中排除TableListObject.DataBodyRange.Delete
它确实会用我想要的数据填充表格,但如果我更改组合框,新数据将添加到底部,而不是先清除表格。
excel - 循环遍历 ListObject 中的行以删除它们非常慢
我有一个 ~500 行的 ListObject 表,我在一个命名范围内也有 4 个值。
对于 500 行,可能有 30 个唯一值重复(随机)出现,我想删除其值不在命名范围内的所有行。
我有以下工作,但运行速度比预期慢(大约 2 分钟):
我不确定是对工作表函数的依赖还是只是循环遍历减慢了它的行。
有没有办法过滤 listobject 并丢弃其余的?
我正在考虑只是在其上放置一个进度条,以便用户可以看到正在发生的事情......
c# - 将 ListObjects 写入特定格式文件
我想序列化一个列表并以特定方式将其写入文件,但我现在无法这样做,我的文件是这样的:
但我需要这样
我怎样才能使我的文件像第二种格式?这是我的序列化操作:
excel - 从 ListObject 表的特定列中选择 SpecialCells(xlCellTypeVisible)
我试图仅将 ListObject 表的某些列的可见单元格放入范围对象中。
这似乎不起作用。
但是当我选择整个范围然后偏移第一列以选择其他 2 个所需的列时,这有效!
但我不能在公式中使用上述内容,因为我的公式仅引用了 listobject 中的 2 列,如下所示:
工作表上的 UDF 公式:
我将其用作:
正如您从图像中看到的那样,我只想要“品牌”和“索引”列中的可见单元格范围,而不是“COLUMN”列中的单元格。
所以我想要的可见范围是:
编辑@Jeeped:
如果我有一个从工作表单元格调用的 UDF 函数并传递了列 B 和 C 的 ListObject 范围(仅这些列而不是整个 databodyrange),那么我将如何找到 RngWrdLst 可见范围?
例如
从工作表调用:
函数定义:
顺便说一句,RngWrdLst 将包含 2 列 B 和 C。那么我如何修改您的代码并仅从函数中获取可见范围?