c# - 如何使用 C# 在 Excel 中获取用户选定范围内的特定单元格

标签 c# excel range excel-interop excel-addins

我创建了我的第一个 Excel 加载项,并希望在用户选择的范围内查找特定单元格。

我知道我需要的值所在的列。所以我测试它:

Excel.Range selection = Globals.ThisAddIn.Application.Selection as Excel.Range;
Excel.Range firstValue = selection.Columns["I"].Find("*", Type.Missing, Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlPart,Excel.XlSearchOrder.xlByColumns,Excel.XlSearchDirection.xlNext, false, Type.Missing,Type.Missing);

现在我有了“I”列的第一个值

当用户做出的“选择”从“A”列开始时,这工作正常

如果用户选择例如从 C2 到 H20,则代码找不到“I”列 我成为比其他范围,而不是“我”列。

我认为对他来说“我”总是“9”。 当用户从新范围的“C2”到“H20”中选择列“C”=“0”和列“L”= 9 所以代码选择列“L”即使我在代码中写“I” .

有谁知道无论用户从哪里开始他的选择,我怎样才能在用户的选择中读取我想要的特定列或单元格?

提前谢谢你

最佳答案

正如您所发现的,当您处理单元格选择时,左上角的单元格在处理该选择中的单元格引用时相当于 A1,其他单元格由它们所在的行和列引用偏移到左上角的单元格。

如果您希望在我被用户选择的行截断的列区域内搜索,那么我建议使用 _Application.Intersect method .

如果您希望在第 I 列的某个部分中进行搜索,即使没有交集,也可以使用选择的顶行和底行作为列 I 的边界,使用 selection.cells[1] 定义列 I 中的第一个单元格。行并通过 selection.rows.count 调整它的大小。

关于c# - 如何使用 C# 在 Excel 中获取用户选定范围内的特定单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29733181/

相关文章:

c# - 旋转形状时,它与旋转的形状保持在一起

c# - 在datagridview c#的两行之间添加一个新行

excel - VBA - Excel 2016 中的箱线图

javascript - Dart HTML - 输入范围 onchange 无需释放鼠标按钮

java - 如何使用 selenium 更改输入值 [type ='range' ]

c# - 将日期和时间的指定字符串表示形式转换为其等效的 DateTime

c# - 流的通用 IDisposable 包装器 - 捕获所有异常的替代方法

performance - VBA:加快复制速度

Python:Pandas pd.read_excel 给出 ImportError:安装 xlrd >= 0.9.0 以获得 Excel 支持

swift - 自定义范围运算符 - Swift 4.1