Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 将单元格合并到同一列中_Excel_Vba - Fatal编程技术网

Excel 将单元格合并到同一列中

Excel 将单元格合并到同一列中,excel,vba,Excel,Vba,好的,我已经看了前面的很多问题,找不到一个适合我想做的 我正在尝试构建一个宏或VBA,该宏或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 w

好的,我已经看了前面的很多问题,找不到一个适合我想做的

我正在尝试构建一个宏或VBA,该宏或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
可以工作,并且可以复制和粘贴它,但是当信息可能被过度写入单元格时,公式就不起作用了

任何帮助都会很好

我还附上了要显示的组的屏幕截图

第一组

第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触发器列出单元格。我已将
MP72
包括在列表中,以及用于测试的其他单元格中。移除它们。可以只指定一个或多个单元格。代码从单击的单元格中获取列。一次双击只会执行其中一个选项


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

以下是我提出的方法,它会将大部分常量触发器变为红色

选项显式
双击之前的专用子工作表(ByVal目标作为范围,Cancel作为布尔值)
'Variatus@STO 2020年1月26日
'列出应触发连接操作的单元格
"在各自的栏目中,
目前,72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、N72、O72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、M72、72、72、72、72、72、72、72、72、72、72、M72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、A72、72、72、72、72、72、72、72、72、72、72、A72、72、72、72、72、A72、72、72、72、72、72、A72、72、72、72、72、72、72 72,BL72,BM72,BN72,BO72,BP72,BQ72,BR72,72,中国72,中国72,中国72,中国72,中国72,中国72,中国72,中国72,中国72,CC72,中国72,CD72,中国72,中国72,中国72,中国72,中国72,中国72,中国72,北京72,北京72,北京72,北京72,北京72,北京72,北京72,北京72,北京72,中国72,中国72,中国72,中国72,中国72,中国72,中国72,中国72,CE72,中国72,中国72,CE72,中国72,中国72,中国72,CE72,中国72,CE72,中国72,中国72,中国72,中国72,中国72,中国72,中国72,中国72,中国72,中国72,中国72,中国72,中国72,中国72,中国72,中国72,中国72,中国72,中国72,中国72,中国72,中国72,中国72,中国72,中国72,中国72,中国72,中国72,中国72,中国72,中国72,中国72,中国72,中国72 72,ED72,EE72,EF72,EG72,EH72,EI72,EJ72,72、ET72、EU72、EV72、EV72、EV72、EV72、EW72、EW72、E72、E72、E72 72、E72、E72、EX72、E72、E72、E72、E72、E72、E72、E72、E72、E72、E72、E72、E72、E72、E72、72、E72、E72、E72、E72、72、72、E72、72、72、72、埃72、E72、72、埃72、埃72、埃72、埃72、埃72、72、埃72、72、埃72、E72、埃72、埃72、72、72、埃72、埃72、72、埃72、72、72、72、72、埃72、埃72、埃72、埃72、埃72、埃72、埃72、72、埃72、埃72、72、72、埃72、埃72、72、72、72、埃72、72、E72、72、72、72、72、72 72,ID72,IE72,IF72,IG72,IH72,II72,IJ72,IK72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,I72,IKY72、KT72、KU72、KV72、KW72、KX72、KY72、KZ72、LA72、LB72、LC72、,72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72人、72 NN72,NO72,NP72,NQ72,NR72,NS72,NT72,NU72,72,O72,O72,O72,72,O72,72,72,72,72,72,72,72,O72,O72,O72,O72,O72,O72,O72,O72,O72,O72,O72,O72,O72,72,O72,72,72,72,72,72,72,72,O72,O72,O72,O72,O72,O72,O72,72,O72,O72,O72,O72,O72,O72,O72,O72,O72,O72,O72,O72,O72,O72,O72,O72,O72,O72,O72,O72,O72,O72,O72,O72,O72,O72,O72,O72,O72,O72,O72,O72,O72,O72,O72,O72,O72,O72,O72,O72,O72,O72,O72,OQG72、QH72、QI72、QJ72、QK72、QL72、QM72、,Q72,Q72,Q72,Q72,Q72,Q72,Q72,Q72,Q72,Q72,Q72,Q72,Q72,Q72,QX72,QX72,QX72,Q72,Q72,Q72,Q72,Q72,Q72,Q72,Q72,Q72,Q72,Q72,Q72,Q72,Q72,Q72,Q72,Q72,QXXXX7 7 7 7 7,Q72,Q72,Q72,Q72,Q72,Q72,Q72,Q72,QXXX7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7,Q72,Q72,Q72,Q72,Q72,Q72,Q72,Q72,Q7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7,Q7 7 7 7 7 7 7 7 7 7 7 7,Q7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 SV72、SW72、SX72、SY72、SZ72、TA72、TB72、TC72、TD72、,72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、T72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、不72、72、72、72、72、72、72、72、72、不72、72、72、72、不72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、不72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、72、VN7,WW72,WX72,WY72,WZ72,XA72,XB72,XC72,XD72,72、X72、X72、X72、X72、X72、X72、X72、X72、X72、XN72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、X72、XZL72,ZM72,ZN72,ZP72,ZQ72,ZR72,ZS72,ZT72,ZU72,ZV72,ZW72,ZX72,ZY72,ZZ72“
'在触发器列中列出所有要合并的单元格。
'Like,30=6&23意味着合并单元格的值
'6和23在第30单元
'(分隔逗号很重要,空格不重要)
常量合并为String=“78=10&129,79=11&130,80=12&131,82=14&133,83=15&134,84=16&135,85=17&136,86=18&137”
将触发器()设置为字符串
作为整数的Dim t
变暗R为长,C为长
Dim merge()作为字符串,Sp()作为字符串
作为整数的Dim i
触发器=拆分(触发器,“,”)
对于t=0到uBond(触发器)
如果Target.Address=范围(微调(触发器