excel 根据单元格的值设置范围,然后进行合并

djp7away  于 2023-06-25  发布在  其他
关注(0)|答案(1)|浏览(84)

我在第一行找到了一个连续的单元格,其值为Attach*
我需要为这个单元格设置一个范围,然后合并。
下面的代码可以工作,但它是不可靠的,因为这些情况可能发生:
1-如果只找到一个具有值Attach*的单元格,则它将把它与右侧的所有单元格(甚至是空白单元格)合并,
2-或者有两个或多个值为Attach*的单元格,但它们的右侧有非空白单元格。

Sub Set_range_depends_on_values()

    Dim ws As Worksheet:  Set ws = ActiveSheet
    
    Dim rngStart As Range
    
    Set rngStart = ws.Rows(1).Find(What:="Attach*", After:=Range("A1"), _
              LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, _
              SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
              
    If rngStart Is Nothing Then MsgBox "No cells with value Attach*": Exit Sub
              
    Set rngStart = ws.Range(rngStart, rngStart.End(xlToRight))
    
    rngStart.Merge
    
    rngStart.Select   'just to see the result

End Sub

toiithl6

toiithl61#

这加的线就行了

Sub Set_range_depends_on_values()

    Dim ws As Worksheet:  Set ws = ActiveSheet
    
    Dim rngStart As Range
    
    Set rngStart = ws.Rows(1).Find(What:="Attach*", After:=Range("A1"), _
              LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, _
              SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
        Set rngStop = ws.Rows(1).Find(What:="Attach*", After:=Range("A1"), _
              LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, _
              SearchDirection:=xlPrevious, MatchCase:=False, SearchFormat:=False)
          
    If rngStart Is Nothing Then MsgBox "No cells with value Attach*": Exit Sub
              
    Set rngStart = ws.Range(rngStart, rngStop)
    
    rngStart.Merge
    
    rngStart.Select   'just to see the result

End Sub

相关问题