标签: listobject

如何在Excel vba中引用表?

Excel VBA中是否可以引用命名表?

假设这可能是......

Sheets("Sheet1").Table("A_Table").Select
Run Code Online (Sandbox Code Playgroud)

我已经看到一些提到表是列表对象,但我不确定这是不是同样的事情......

excel vba excel-vba listobject excel-tables

29
推荐指数
6
解决办法
13万
查看次数

Excel 2010,VBA和ListObjects小计不更新表更改

所以,有这个结构(从A1开始 - 显示片段>运行):

table {
  border-color: #BBB;
  border-width: 0px 0px 1px 1px;
  border-style: dotted;
}
body {
  font: 12px Arial, Tahoma, Helvetica, FreeSans, sans-serif;
  color: #333;
}
td {
  border-color: #BBB;
  border-width: 1px 1px 0px 0px;
  border-style: dotted;
  padding: 3px;
}
Run Code Online (Sandbox Code Playgroud)
<table>
  <tbody>
    <tr>
      <th></th>
      <th>A</th>
      <th>B</th>
      <th>C</th>
      <th>D</th>
    </tr>
    <tr>
      <td>1</td>
      <td>Title 1</td>
      <td>Title 2</td>
      <td>Title 3</td>
      <td>Title 4</td>
    </tr>
    <tr>
      <td>2</td>
      <td>GH</td>
      <td>1</td>
      <td>434</td>
      <td>4</td>
    </tr>
    <tr>
      <td>3</td>
      <td>TH</td>
      <td>3</td>
      <td>435</td>
      <td>5</td>
    </tr>
    <tr>
      <td>4</td>
      <td>TH</td>
      <td>4</td>
      <td>4</td> …
Run Code Online (Sandbox Code Playgroud)

vba subtotal excel-2010 listobject

7
推荐指数
1
解决办法
1131
查看次数

使用 pandas 将 Excel 工作表(Listobject)读取到 python 中

有多种方法可以将 Excel 数据读取到 Python 中。Pandas 还提供了用于写入和读取的 API

import pandas as pd
from pandas import ExcelWriter
from pandas import ExcelFile

df = pd.read_excel('File.xlsx', sheetname='Sheet1')
Run Code Online (Sandbox Code Playgroud)

效果很好。

但是:将每个工作表的表格直接访问到 pandas 数据框中的方法是什么?

在此输入图像描述

上图显示了一个工作表,其中包含一个与 CELL (1,1) 分开的表。

此外,该工作表可能包含多个表(VBA 中的列表对象)。

我无法在任何地方找到将它们读入熊猫的方法。

注意1:无法修改工作簿以使所有表格都指向单元格(1,1)。注2:我想只使用pandas(如果可能的话)并尽量减少导入其他库的需要。但没有其他办法我准备使用其他lybray。无论如何,我无法使用 xlwings 进行管理。

这里看起来可以解析excel文件,但是没有为表格提供解决方案,仅提供完整的工作表。

pandas 的文档似乎没有提供这种可能性。

谢谢。

python excel vba listobject pandas

7
推荐指数
2
解决办法
2万
查看次数

通过VBA在Excel Listobject/Table中添加/修改/删除计算列公式

如果我手动将公式输入Excel表格中的列(即ListObject),则自动更正将此公式应用于整个列.

有没有办法通过VBA控制这种行为,即我可以以某种方式修改/删除/添加此公式?

我知道我可以简单地更改ListObject.ListColumns(1).DataBodyRange对象的公式- 但这将覆盖之前输入的任何手动值 - 而在UI中更改公式将保持不变...

excel vba excel-vba listobject excel-tables

6
推荐指数
1
解决办法
3万
查看次数

Excel 列表对象 VBA 性能错误?

我在使用列表对象(又名 Excel 表格)的 excel 应用程序上遇到了性能问题。我怀疑这可能是一个错误,但尽管我在谷歌上搜索,但我找不到任何参考。我已经为我的应用程序开发了一种解决方法,但我感兴趣的是是否有人可以深入了解为什么会发生这种情况。

注意:我在 Windows Vista 上使用 Excel 2007。设置如下:我有一个电子表格,其中包含一个列表对象中的数据,带有可以通过命令按钮启动的 VBA 代码;此代码可以对工作表上的任意数量的单元格进行多次编辑,因此在进行任何编辑之前,Excel 的计算模式设置为手动。

我遇到的问题是,如果当前活动的单元格在列表对象内,那么将计算模式设置为手动似乎没有任何效果。因此,如果用户碰巧在同一实例中打开了大量计算工作簿,则 VBA 代码运行速度非常慢。我几乎不得不拆开我的应用程序,发现这是由活动单元引起的;并且我创建了一个包含此场景简单版本的新工作簿,以确认我的应用程序没有某种损坏。

我一直在用这个做一些测试用例,下面是我发现的结果:

  1. 虽然看起来一般都跟计算有关,但是计算模式在手动和自动之间切换还是有时间差的……

    • 手动 = 7.64 秒
    • 自动 = 9.39 秒

    手动模式比自动模式快不到 20%。但我的期望是它们或多或少是相同的,考虑到问题似乎是即使在手动模式下也开始计算。

  2. 与活动单元格不在列表对象上时相比,结果大不相同......

    • 手动 = 0.14 秒
    • 自动 = 3.23 秒

    现在,手动运行速度提高了 50 倍,而自动运行显示计算时间不应超过 3.2 秒!所以现在第一个测试看起来可能在手动模式下运行了两次计算,在自动模式下运行了近 3 次。

  3. 再次重复这个测试,这次是在一个单元格中没有计算公式的实例中,突然它看起来没有那么糟糕,

    • 活动单元格为 List Object & Calc 为 Manual = 0.17 秒
    • 活动单元格是列表对象和计算是自动 = 0.20 秒
    • 活动单元格为空且计算为手动 = 0.14 秒
    • 活动单元格为空且计算器为自动 = 0.18 秒

    它仍然较慢,但现在只有 10-20%,使其不明显。但这确实表明该问题必须以某种方式与计算相关,否则它应该与第一次测试一样长。

如果有人想创建这些测试以供自己查看,设置如下:

  • 添加了列表对象的新工作簿(不必链接到任何数据)
  • 添加一些需要 excel 一段时间才能计算的公式(我只是重复了 30,000 次 '=1*1')
  • 编写一个快速的 VBA …

excel performance vba listobject

5
推荐指数
1
解决办法
3400
查看次数

Excel VBA:如何检查计算列?

如果Excel中的表(ListObject)的特定列是计算列(如http://office.microsoft.com/en-us/excel-help/use-calculated-columns-),是否可以在VBA中进行检查在-excel-表-HA010342380.aspx)?

请注意,计算列不仅每行具有相同的 R1C1 公式集,而且还会在添加新行时自动扩展(如果删除整个数据主体范围然后重新创建一些新行,它甚至会重新填充)。因此,检查具有一致公式的列与检查计算公式不同。

甚至可以计算一列,但用某些其他公式或值覆盖其中一行,并保留自动扩展功能。

所以我非常确信这一定是该列的某些属性,我只是不确定在哪里可以通过 VBA 访问它。如果它没有通过 VBA 对象模型公开,是否有一些解决方法来获取此信息?

预先感谢,卡洛斯

编辑:我对 Excel Office Open XML 文件进行了一些挖掘,结果发现我正在寻找的是xl\tables\table*.xml 文件定义<calculatedColumnFormula>上的元素。<tableColumn>有什么办法可以通过VBA实现这一点吗?

EDIT2:这是一个示例文件,其中包含我可以提出的测试用例。VBA 应指示第 1、2 和 3 列是计算列,而第 4 和 5 列不是。

excel vba calculated-columns listobject

5
推荐指数
2
解决办法
2929
查看次数

如何将一个Excel表(ListObject)中的多行追加到另一行?

我有两个表:

    Table_1         Table_2
   A   B   C       A   B   C
 -------------   -------------
1| A1| B1| C1|  1| A2| B2| C2|
2| A1| B1| C1|  2| A2| B2| C2|
3| A1| B1| C1|  3| A2| B2| C2|
Run Code Online (Sandbox Code Playgroud)

结果表:

    Table_1   
   A   B   C  
 -------------
1| A1| B1| C1|
2| A1| B1| C1|
3| A1| B1| C1|
4| A2| B2| C2|
5| A2| B2| C2|
6| A2| B2| C2|
Run Code Online (Sandbox Code Playgroud)

Table_2是一个临时表(ListObject),它使用数据连接在数据库中查询条目。

Table_1是一个表(ListObject),用作条目的集合列表。之所以将其分开,是因为(1)缩短了Table_2中的查询时间,并且(2)进行了一些程序编辑。

我有VBA代码,可将Table_2复制到Table_1,然后更新Table_2的连接字符串,以不包括日期在Table_1范围内的条目。结果是Table_2仅提取新数据。

我的代码(正确)将数据从Table_2复制到Table_1:

For Each temprow in Table_2.ListRows
  Set newRow = table_1.ListRows.Add
  tempRow.Range.Copy
  newRow.Range.PasteSpecial …
Run Code Online (Sandbox Code Playgroud)

excel vba listobject

5
推荐指数
2
解决办法
6354
查看次数

使用VBA在Excel工作表中创建表

我在下面有这个代码会自动选择一个范围.有谁知道如何添加代码来创建所选范围的表?

谢谢!

Sub DynamicRange()
'Best used when first column has value on last row and first row has a value in the last column

Dim sht As Worksheet
Dim LastRow As Long
Dim LastColumn As Long
Dim StartCell As Range

Set sht = Worksheets("Sheet1")
Set StartCell = Range("D9")

'Find Last Row and Column
  LastRow = sht.Cells(sht.Rows.Count, StartCell.Column).End(xlUp).Row
  LastColumn = sht.Cells(StartCell.Row, sht.Columns.Count).End(xlToLeft).Column

'Select Range
  sht.Range(StartCell, sht.Cells(LastRow, LastColumn)).Select

End Sub
Run Code Online (Sandbox Code Playgroud)

excel vba worksheet excel-vba listobject

5
推荐指数
1
解决办法
7万
查看次数

使用VBA将值插入excel表的正确方法是什么?

我需要能够使用VBA代码在excel中的空表中插入一大组值.这是代码到目前为止的工作方式.

首先,用户将值输入到用户表单中.然后代码清除表格,然后根据代码中已有的查找条件找到一系列数字.检索到的数据全部包含在单个列中,并像数组一样存储.

从这里开始,我需要将所有值放入表中的某个列(Policy#),从而将表行扩展为检索数据集中的许多行.(如果需要,我确实将计数单独存储为"AC")我要插入的列标题是"Policy#".

请记住,代码当前表中只有一个空行,如何正确插入数据?我试过了

 range("commissionstatement[Policy #]").value = Als
Run Code Online (Sandbox Code Playgroud)

但那不起作用.顺便提一下,Als是一系列价值观.通常要插入我必须插入到大小相等的范围的数组,这就是为什么我已经将行计数作为AC.

我也尝试过使用range("commissionstatement").listobject.listrows但不起作用.

有什么建议?在我实际将数据放入那里之前,我是否需要在表中插入一些等于我添加的数据的行...

range("commissionstatement").listobject.listrows.add ()
Run Code Online (Sandbox Code Playgroud)

然后插入数据?

如果需要更多信息,请与我们联系.谢谢!

arrays vba insert excel-vba listobject

4
推荐指数
1
解决办法
3万
查看次数

将行添加到Excel表

我正在使用Excel 2013/2015 VSTO工作簿应用程序.从在Windows窗体中输入的数据,我想在我的一个工作表的现有表中创建一个新记录.

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

c# excel vsto visual-studio listobject

2
推荐指数
1
解决办法
2558
查看次数