【问题标题】:merge cells based on value of another cell with VBA基于另一个单元格的值与 VBA 合并单元格
【发布时间】:2015-04-02 08:41:40
【问题描述】:

我一直在做一个项目,我正在努力让事情变得更顺利:)

我有一个包含几列的 Excel 表,如下所示,C 列是主题的重要性(基于该行中输入的信息),D 列是输入的信息是新信息还是新信息更新关于前(上)行。苏:

如果我在 D 列第 3 行输入“​​更新”;我希望它自动合并单元格 C2 和 C3。

     C      D
1   LOW     new
2   HIGH    new
3          update
4   Low     new
5          update
6          update

我不知道如何编写 VBA 代码,但我基本上可以理解这些代码,足以将我在互联网上找到的内容用于我想要实现的目标。我检查了很多网站以找到我需要的任何东西,但我没有运气,所以如果你能帮助我,我将非常感激:)

【问题讨论】:

    标签: vba excel merge


    【解决方案1】:

    试试这个:

    Sub Merge_Priority()
    Dim RgToMerge As String
    
    
    For i = 1 To ActiveSheet.Cells(Rows.Count, 4).End(xlUp).Row
        RgToMerge = ""
        If LCase(Cells(i, 4)) <> "update" Or (LCase(Cells(i + 1, 4)) <> "new" And Cells(i + 1, 4) <> "") Then
        Else
            RgToMerge = "$C$" & Cells(i, 3).End(xlUp).Row & ":$C$" & i
            With Range(RgToMerge)
                .Merge
                .HorizontalAlignment = xlCenter
                .VerticalAlignment = xlCenter
            End With
        End If
    
    Next i
    
    End Sub
    

    你知道如何在事件中添加宏吗?

    转到 Visual Studio,选择左侧的ThisWorkBook 并使用以下命令创建一个宏:

    Private Sub Worksheet_Change()
    

    然后在上面粘贴代码

    【讨论】:

    • 非常感谢您的回复!对于这个负担,我很抱歉,但我认为我可以编辑您发布的代码并将其调整到我的文件中,但实际上我做不到。包含高低值的列在 C 上,新的和更新的列是 D。你能帮我根据这个信息更改代码吗?
    • 更改完成! ;) 如果一切正常,请验证关闭主题的答案!
    • 一切都很好,但我不知道如何使用这段代码,当它合并从顶部(C1)到最后一行的“更新”值的单元格时,它会合并所有列在一个。无论如何都要对其进行编码,以便单元格合并直到上一个(向上)“新”值?
    • 我的错,我忘了更改RgToMerge定义中的列号,现在试试吧
    【解决方案2】:

    您可以尝试在当前工作表中添加此宏。

    Private Sub Worksheet_Change(ByVal Target As Range)
    
    IF Target.value = "Update" then
         Range("A" & Target.row - 1 & ":A" & Target.row).Merge
    End If
    
    End Sub
    

    【讨论】:

    • 这样您只会合并两个单元格,但实际上它会在工作表中的每次更改时启动。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-30
    相关资源
    最近更新 更多