将同一列中的单元格合并在一起

问题描述 投票:-1回答:1

好吧,我已经经历了很多先前的问题,但找不到适合我要解决的问题。

[我正在尝试建立一个宏或VBA,它将一个列中第1组的单元格与同一列中第2组的单元格合并到同一列中的其他单元格。

我需要能够对工作表上的每一列执行宏。要为某列激活它,我希望它在第72行的该列中的单元格中放入“ x”时使用。

例如:

I enter "x" in Cell 72 on Column MP.

I need Cell 78 in the MP column to merge cell 10 and 129 together with a " / " between them.

[我知道公式=MP78 & " / " &MP129有效并且可以复制和粘贴它,但是当可以在单元格中覆盖信息时,公式将不起作用。

任何帮助都会很棒。

我也附上了各组的屏幕截图。

Group 1

Group 1

Group 2

Group 2

**在哪里合并单元格

Where to merge Cells

excel vba
1个回答
0
投票

这是我昨天为您的问题准备的答复。请将代码粘贴到要对其执行操作的工作表的代码模块中。这是一个由Excel创建的模块,不需要插入。位置很重要。

Option Explicit

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    ' Variatus @STO 26 Jan 2020

    ' list the cells that should trigger joining actions
    '   in their respective columns
    Const Triggers As String = "A4,B16, D15,MP72"

    ' list all cell you wish to merge in the Trigger column.
    '   Like, 30 = 6 & 23 to mean, merge the values of cell
    '                              6 & 23 in cell 30
    '   (separating commas are imporant, spaces are not)
    Const Mergers As String = "78=10&129, 30=6&23, 31=14 & 12, 32=30 & 18"

    Dim Trigger() As String
    Dim t As Integer
    Dim R As Long, C As Long
    Dim Merger() As String, Sp() As String
    Dim i As Integer

    Trigger = Split(Triggers, ",")
    For t = 0 To UBound(Trigger)
        If Target.Address = Range(Trim(Trigger(t))).Address Then
            Application.ScreenUpdating = False
            C = Target.Column
            Merger = Split(Mergers, ",")
            For i = 0 To UBound(Merger)
                Sp = Split(Merger(i), "=")
                R = Val(Sp(0))
                Sp = Split(Sp(1), "&")
                Cells(R, C).Value = Cells(Val(Sp(0)), C).Value & _
                                    " / " & _
                                    Cells(Val(Sp(1)), C).Value
            Next i
            Application.ScreenUpdating = True
            Cancel = True
            Exit For
        End If
    Next t
End Sub

该过程将对双击做出响应,而不是输入“ x”,但是只有双击特定的单元格时,它才会采取措施。 Const Triggers列出了单元格。我将MP72包括在列表中以及用于测试的其他单元格中。删除它们。您只能指定一个或多个单元格。该代码从单击的单元格中获取该列。一次双击将只执行一个选项。

Const Mergers允许您指定要合并的单元格-始终在单击的列中。格式很简单:“ 78 = 10&129”的意思是“合并第10行和第78行中的单元格中的值129。您可以根据需要指定任意数量的此类合并。我的示例有四个,仅用于说明如何输入规格。

© www.soinside.com 2019 - 2024. All rights reserved.