【问题标题】:Get A List Of Excel Cells Where The Cell Name Contains A Substring获取单元格名称包含子字符串的 Excel 单元格列表
【发布时间】:2017-05-18 03:25:01
【问题描述】:

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

我有一个为每个单元格分配名称的 Excel 工作表,我正在尝试获取名称包含某个子字符串的单元格列表。也许是这样的:

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

我不知道该怎么做,因为 worksheet.Cells 是一个范围而不是一个集合。有没有办法做到这一点?

【问题讨论】:

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


    【解决方案1】:

    在 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
    

    【讨论】:

      【解决方案2】:

      我必须解决一次类似的问题并使用:

      currentFind 是一个 ExcelRange。

      currentFind =  mySheet.UsedRange.Find("_", misvalue,
                  Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlPart,
                  Excel.XlSearchOrder.xlByRows, Excel.XlSearchDirection.xlNext, false,
                      misvalue, misvalue);
      

      【讨论】:

        猜你喜欢
        • 2015-07-16
        • 2018-04-21
        • 2013-02-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-29
        相关资源
        最近更新 更多