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

How to get a specific cell in a user selected range in Excel using C#

我创建了我的第一个 Excel 加载项,并希望在用户 select.

范围内找到特定的单元格

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

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"

列的第一个值

当用户创建的 "selection" 从第 "A"

列开始时,这工作正常

如果用户 select 例如从 C2 到 H20 代码找不到列 "I" 我变成了其他范围,而不是 "I" 列。

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

有谁知道如何读取用户 selection 中我想要的特定列或单元格,无论用户从哪里开始他的 selection?

提前致谢

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

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

如果您希望在第 I 列的某个部分中搜索并将选择的顶行和底行作为列 I 的边界,即使没有交集,请使用 selection.cells 定义列 I 中的第一个单元格[1].row 并按 selection.rows.count.

调整大小