获取单元格名称包含子字符串的Excel单元格列表

时间:2015-03-04 17:46:51

标签: c# vb.net excel excel-interop

在VB或C#中使用Microsoft.Office.Interop.Excel如何执行以下操作?

我有一个excel表,其名称分配给每个单元格,我试图获取名称包含某个子字符串的单元格列表。也许是这样的:

worksheet.Cells.Where(x => x.Name.Contains("_"));

我无法弄清楚如何做到这一点,因为workheet.Cells是一个范围,而不是一个集合。有没有办法实现这个目标?

2 个答案:

答案 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);