在VB或C#中使用Microsoft.Office.Interop.Excel如何执行以下操作?
我有一个excel表,其名称分配给每个单元格,我试图获取名称包含某个子字符串的单元格列表。也许是这样的:
worksheet.Cells.Where(x => x.Name.Contains("_"));
我无法弄清楚如何做到这一点,因为workheet.Cells是一个范围,而不是一个集合。有没有办法实现这个目标?
答案 0 :(得分:0)
在VBA中,您可以遍历Names集合。所有名称都是Workbook集合的属性;此外,具有工作表范围的那些名称也将位于该工作表名称集合中。
因此,要返回列表,根据您对列表的处理方式,一种方法是使用用户定义函数:
Option Explicit
Function GetNames(sContains As String) As Variant
Dim WB As Workbook
Dim N As Name, NS As Names
Dim colNames As Collection
Dim V() As Variant
Dim I As Long
Set WB = ThisWorkbook
Set NS = WB.Names
Set colNames = New Collection
ReDim V(0 To 1)
For Each N In NS
If N Like "*" & sContains & "*" Then
V(0) = N.Name
V(1) = N.RefersTo
colNames.Add V
End If
Next N
ReDim V(1 To colNames.Count, 1 To 2)
For I = 1 To colNames.Count
V(I, 1) = colNames(I)(0)
V(I, 2) = colNames(I)(1)
Next I
GetNames = V
End Function
答案 1 :(得分:0)
我必须解决一个类似的问题并使用:
currentFind是一个ExcelRange。
currentFind = mySheet.UsedRange.Find("_", misvalue,
Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlPart,
Excel.XlSearchOrder.xlByRows, Excel.XlSearchDirection.xlNext, false,
misvalue, misvalue);