【问题标题】:Given the name of an excel cell, how can i find its value?给定一个 excel 单元格的名称,我怎样才能找到它的值?
【发布时间】:2015-06-10 16:25:43
【问题描述】:

所以在 excel 中,您可以指定单元格名称以避免使用行号和列号。在这种情况下,这特别有用,因为我正在处理几个 excel 工作表并且不知道这个特定的单元格将在哪里。

我怎样才能得到这个单元格的值?我目前正在遍历整个工作表来寻找它,但我在网上偶然发现了这个,这将大大加快我的申请速度。

如果在网上找到建议xlWorkSheet.Cells("CellName").ValuexlWorkSheet.GetCell("CellName").Value 的帖子。不幸的是,cells 方法不接受字符串作为参数,并且 GetCell 方法不存在。我正在使用互操作库。提前谢谢你。

【问题讨论】:

  • 循环代码是什么样的?您要查找作为单元格值的字符串是什么?
  • 当我遇到这些问题时,我通常会设置一个断点,进入调试,然后将有问题的对象添加到手表中。例如,将 xlWorkSheet 添加到手表中,然后向下展开箭头并开始探索子对象,直到找到所需的内容。
  • @user3578951 它有几个嵌套的 for 循环,没什么特别的。只是有一个巨大的运行时间
  • 你试过xlWorkSheet.Range吗?尽管它的名字,它可以返回单个命名的单元格。
  • @Ken White,就是这样,谢谢

标签: .net vb.net excel


【解决方案1】:

编辑:Range("MyName") 是一种方法,但如果您在 VBA 中,获取范围值的最短方法是使用 Evaluate 函数简写:[MyName] 这将有效地返回命名范围叫MyName

或来自 powershell(也使用类似 .NET 的 COM):

$Excel.Evaluate("MyName").Value()

原答案: 你试过 worksheet.names 和 workbook.names

ThisWorkbook.Names("MyName").RefersToRange.Value

通过 COM 自动化 / VSTO / Powershell 也可以证明这一点:

$file = "C:\Users\Vincent\Desktop\test.xls"

$Excel = New-Object -ComObject excel.application
$Excel.visible = $false
$Workbook = $Excel.Workbooks.open("C:\Users\Vincent\Desktop\test.xls") 
$Workbook.Names.Item("MyName").RefersToRange.Value()

还请注意,命名范围的范围对您如何访问它很重要:

【讨论】:

  • 有趣的是,如果命名范围有不同的范围,它会帮助您获得更一致的结果,但会被否决...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-19
  • 1970-01-01
  • 2010-12-29
  • 2010-12-31
  • 1970-01-01
  • 1970-01-01
  • 2016-04-07
相关资源
最近更新 更多