好吧,我已经经历了很多先前的问题,但找不到适合我要解决的问题。
[我正在尝试建立一个宏或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 2
**在哪里合并单元格
这是我昨天为您的问题准备的答复。请将代码粘贴到要对其执行操作的工作表的代码模块中。这是一个由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。您可以根据需要指定任意数量的此类合并。我的示例有四个,仅用于说明如何输入规格。