2016-07-06 61 views
-2

我有大约50张数据和结构,他们都是一样的。请在下面的示例中查找数据结构,5月的列中将显示数据,下一列的字母显示为“B”或“AB”。我想合并这两列,所以我的数据看起来像236AB。我的代码应该适用于表格中的所有列,因为在一些表格中,我有5列,而另外有25列。有人可以帮我处理这个问题吗?非常感谢!灵活的合并 - 两列在一个

enter image description here

+2

欢迎来到SO,所有的东西都是由这些东西组成的,而这些东西并不重要。请张贴你已经尝试过的代码,因为这不是一个“免费代码”网站 – RGA

回答

0

我为您的需求添加了代码,它会自动搜索5月和6月的关键字,并且仅针对特定列进行连接。

Sub test() 
Dim wb As Workbook 

Set wb = ThisWorkbook 
Dim Ws As Worksheet 

Dim monthss(12) As String 

monthss(1) = "May" 
monthss(2) = "June" 
monthss(3) = "August" 



    For Each Ws In wb.Worksheets 

    For j = 1 To 3 

With Ws.UsedRange 
    Set c = .Find(monthss(j), LookIn:=xlValues) 
    If Not c Is Nothing Then 
     firstrow = c.Row 
     firstcol = c.Column 
     End If 
    End With 

    Set c = Nothing 
    lastrow = Ws.Cells(Ws.Rows.Count, firstcol).End(xlUp).Row 


' For May Sheet 
If firstrow > 0 Then 

    For i = firstrow + 1 To lastrow 
      Ws.Cells(i, firstcol).Value = Ws.Cells(i, firstcol).Value & Ws.Cells(i, firstcol + 1).Value 
    Next 

firstrow = 0 
End If 
' for June Sheet 

Next j 

Next Ws 
End Sub 
+0

这看起来是我需要的东西,我在这行上有一个错误Set ws = wb.Worksheets(“Sheet1”),改变工作表的名称,但不工作。是否有选择绝对表?宏应该申请所有我的工作表在excel?我假设所有其他月份为检验七月和八月我只需要复制/粘贴到代码下面和更改月份名称?非常感谢您的努力 – Norby

+0

检查您的工作表名称并粘贴数据为 – newjenn

+0

的宏对不起,它的工作很好。我如何添加更多表单和更多列? – Norby

0

不能100%确定你的最终目标是,但你能不能在左侧新增一栏,并使其公式是CONCATENATE(A1:E1),并使其尽量往下走板作为你需要它?

然后,如果您需要之后您可以复制粘贴值列和删除其他人。

即使在Excel中录制,所有操作都相当快。 如果你被卡住了,你是否想要放弃并回复?

+0

Concatenate仅适用于字符串,不幸的是我需要第一列:(所以我的代码应该像下一列中的字母一样工作数据合并到它们旁边 – Norby

+0

因此通过使其成为文本来解决:= CONCATENATE(IF(ISNUMBER(B1),TEXT(B1,0),B1),IF(ISNUMBER(C1),TEXT(C1,0),C1 ),IF(ISNUMBER(D1),TEXT(D1,0),D1)) –

0

这里是一个融合2列在一起的功能:

Function mergeColumns(mergeColumn As Integer) 

Dim i As Integer 

'Adjust startvalue(1) 
For i = 1 To ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row Step 1 

    'Combine mergeColumn and Column next to it 
    Cells(i, mergeColumn).Value = Cells(i, mergeColumn).Value & Cells(i, mergeColumn + 1).Value 

    'Clear the Content of the Cell next to Mergecolumn 
    Cells(i, mergeColumn + 1).Value = "" 
Next i 
End Function 

比方说,你要合并列A和B,通话将mergeColumns 1

现在工作了一个程序来找到合适的要合并的列。