Excel VBA中是否可以引用命名表?
假设这可能是......
Sheets("Sheet1").Table("A_Table").Select
Run Code Online (Sandbox Code Playgroud)
我已经看到一些提到表是列表对象,但我不确定这是不是同样的事情......
正如我在这里学到的(也在SO中引用),以下代码可用于选择第3列的数据主体Table1:
ActiveSheet.ListObjects("Table1").ListColumns(3).DataBodyRange.Select
Run Code Online (Sandbox Code Playgroud)
我需要帮助一起选择多个列 - 比如列3到5,或列X到X + 3.
使用这个问题的答案,我想通过使用实际的列名来中途使用:
Range("Table1[[Column3]:[Column5]]").Select
Run Code Online (Sandbox Code Playgroud)
但我需要能够使用列号而不是名称,因为它们将是函数的结果(即列X到X + d).
如果我手动将公式输入Excel表格中的列(即ListObject),则自动更正将此公式应用于整个列.
有没有办法通过VBA控制这种行为,即我可以以某种方式修改/删除/添加此公式?
我知道我可以简单地更改ListObject.ListColumns(1).DataBodyRange对象的公式- 但这将覆盖之前输入的任何手动值 - 而在UI中更改公式将保持不变...
我一直在测试使用 openpyxl 将表添加到工作表中,但是当我尝试打开它时出现以下错误。文件打开,但格式不正确。点击“恢复”后,Excel 报告表 xml 存在问题。有解决方法/修复此问题吗?
import openpyxl
from openpyxl import Workbook
from openpyxl.worksheet.table import Table, TableStyleInfo
xl_file_name = "new_test.xlsx"
wb = Workbook()
ws = wb.worksheets[0]
ws.title = "Table_Sheet"
headers = ["header1","header2","header3"]
for col in range(1,len(headers)+1):
for row in range(1,5):
if row == 1:
ws.cell(row,col).value = headers[col-1]
else:
ws.cell(row,col).value = str(row)
tbl = Table(displayName="Tbl1",ref="A1:C4")
style = TableStyleInfo(name="TableStyleMedium9", showFirstColumn=False, showLastColumn=False, showRowStripes=True, showColumnStripes=True)
tbl.tableStyleInfo = style
ws.add_table(tbl)
wb.save("new_test.xlsx")
Run Code Online (Sandbox Code Playgroud) 我正在开发一个应用程序,该应用程序获取数据库记录并从该数据创建 Excel 文档。
excel文档生成良好,所有数据可读;截至本论坛之前的回答,该表也已正确生成(即使我滚动过去,标题行仍然可见,因此该表肯定存在)。但是,我原以为一旦有了表格,我就能够对列进行排序和过滤,就像在 Excel 中“插入 -> 表”时的情况一样,但是当我打开文档时没有这样的选项。
我在 XSSFTable 或 XSSFTableColumn 类上没有看到 setFitlerable 或 setSortable 或类似的内容...如何在表列上启用排序/过滤?
如果有用的话,表创建代码如下:
//Create table
CellReference topLeft = new CellReference(sheet.getRow(3).getCell(0));
CellReference bottomRight = new CellReference(sheet.getRow(nextRow-1).getCell(3));
AreaReference tableArea = workbook.getCreationHelper().createAreaReference(topLeft, bottomRight);
XSSFTable dataTable = sheet.createTable(tableArea);
dataTable.setName("TableData" + EXCEL_OBJECT_NUMBER);
dataTable.setDisplayName("TableData" + EXCEL_OBJECT_NUMBER);
XSSFTableColumn column = dataTable.getColumns().get(0);
column.setId(1);
column.setName("COLUMN1");
column = dataTable.getColumns().get(1);
column.setId(2);
column.setName("COLUMN2");
column = dataTable.getColumns().get(2);
column.setId(3);
column.setName("COLUMN3");
column = dataTable.getColumns().get(3);
column.setId(4);
column.setName("COLUMN4");
Run Code Online (Sandbox Code Playgroud) 我希望根据列的值对 Excel 表执行滚动总和。
我只想要当前行的总和(而不是具有相同值的所有行的总和)
我举了一个简单的例子来解释:
我想在公式中使用表引用来获取下表中前 2 列的逐项滚动总和。“物品”和“价值”已知;将计算“Item_Wise_Rolling_Sum”
| 物品 | 价值 | Item_Wise_Rolling_Sum 项目_Wise_Rolling_Sum |
|---|---|---|
| A | 1 | 1 |
| A | 2 | 3 |
| 乙 | 10 | 10 |
| 乙 | 5 | 15 |
| 乙 | 2 | 17 号 |
| C | 6 | 6 |
我尝试使用以下公式但无济于事:
=SUMIFS(MyTable[[#Headers],[Value]]:[@Value], [Item], [@Item])
Run Code Online (Sandbox Code Playgroud)
这个想法是只计算当前行的总和,而不是下面的所有行。
先感谢您。
所以,我有这个问题,我想找到一个列的平均值,通过使用OR函数检查调整列的标准,我尝试将OR放入AverageIf函数,失败,也尝试了"平均值(IF(OR(")再次没有正确的回报.认为这是一件简单的事情,可以轻松完成,但不知道为什么它不起作用.所以我的表是这样的:
ID: Rate Check 1 Check 2 Check 3
1 5 1 1 1
2 3 1 1
3 2 1
4 4
5 5 1 1
6 3
7 4 1
Run Code Online (Sandbox Code Playgroud)
我想通过检查Check 1中是否有任何值来找到rate列的平均值.检查2或检查3列,所以在上面的情况下,我将得到除了行4和6之外的所有行的平均值.这是否可以不使用帮助列?
R我正在尝试尽可能有效地将位于单个 Excel 工作表中的表导入到一个对象中(list没问题,因为我可以从那里进行其余的计算)。
这些表实际上excel ranges不是excel tables,但它们是结构化的并且看起来像表:下面是一个 excel 范围的示例,应将其作为 R 中的表导入:
范围(以表格形式)的长度不同,可以位于同一张纸中的任何位置。
在这里您可以找到一个可以使用的玩具示例(.xlsx 文件):
这是我编写的用于将 Excel 表导入到R. 这是低效的方法,因为它需要先将所有 excel 范围转换为表,然后再运行此代码以将它们导入到 R 中的列表中:
library(purrr)
library(XLConnect)
wb <- loadWorkbook("example.xlsx")
tables <- map(1:100,function(x) tryCatch(readTable(wb,
sheet = "Sheet1",
table = paste0("Table",x)),
error = function(e) NA)
)
Run Code Online (Sandbox Code Playgroud)
是否有一种更好(更有效)的方法R通过将excel文件作为给定并在R. 欢迎任何包裹!
预先非常感谢您。
我正在尝试编写一个代码,该代码将获取标题/名称列表,并为每个标题/名称创建一个选项卡,每个工作表都有一个列表中的名称.例如,给定ActiveSheet上的表(可能不一定是sheet1)
Metric | Comments | Title
1 | testing1 | This is Metric1
2 | testing2 | This is Metric2
Run Code Online (Sandbox Code Playgroud)
我想在ActiveSheet之后添加2个工作表,分别名称为"This is Metric1"和"This is Metric2"(理想情况下,我想用"testing1"填充每个新工作表的单元格A1和"在我们可以运行之前,分别进行测试2".我仍然是VBA的新手,所以请用我的错误代码 - 这是我到目前为止所尝试的:
Sub test_tableTOtabs()
Dim fr As Integer
Dim lr As Integer
Dim col As String
fr = Application.InputBox("Starting row of data: ", , 2)
lr = Application.InputBox("Last row of data: ")
col = Application.InputBox("Column for Tab titles: ")
Dim BaseSheet As Worksheet
Set BaseSheet = ActiveSheet
Dim i As Integer
Dim TitleCell As String …Run Code Online (Sandbox Code Playgroud) 出色地。我在 Excel 的工作表上有一个名为“ALL_INFO”的表,并在其他工作表中创建了一个数据透视表,其名称为“PIVOT_INFO”。我想知道如何链接表和使用切片器过滤信息的数据透视表并将其反映在两个表中。
有人知道我该怎么做吗?
先感谢您。
excel-tables ×11
excel ×10
excel-vba ×4
vba ×4
listobject ×2
apache-poi ×1
average ×1
dataframe ×1
excel-2007 ×1
java ×1
openpyxl ×1
pandas ×1
pivot-table ×1
purrr ×1
python-3.x ×1
r ×1
slicers ×1
sumifs ×1
xlconnect ×1
xssf ×1