Excel 用VBA连接单元格内容

Excel 用VBA连接单元格内容,excel,vba,excel-formula,Excel,Vba,Excel Formula,Excel中的原始数据集如下所示: 但是我想把单元格A3:A4转换成B4:C4。在Excel中,我只需要复制单元格,然后右键单击单元格B4并单击“转置复制单元格”。但是由于有10万行,我需要找到一个很好的解决方案 一个问题是,在单元格之间,我有像“第一节”、“第二节”、“第三节”这样的文本内容,我不想转置它 意味着对于第一部分,它应该只考虑A3和A4等。 这是照片,我想它应该是什么样子 [ 我记录了宏,但是我不知道我应该用“如果Clause”告诉他们,它应该只考虑除了黄色细胞以外的所有东西。<

Excel中的原始数据集如下所示:

但是我想把单元格A3:A4转换成B4:C4。在Excel中,我只需要复制单元格,然后右键单击单元格B4并单击“转置复制单元格”。但是由于有10万行,我需要找到一个很好的解决方案

一个问题是,在单元格之间,我有像“第一节”、“第二节”、“第三节”这样的文本内容,我不想转置它

意味着对于第一部分,它应该只考虑A3和A4等。

这是照片,我想它应该是什么样子

[

我记录了宏,但是我不知道我应该用“如果Clause”告诉他们,它应该只考虑除了黄色细胞以外的所有东西。< /P>
Sub transponieren()
'
' transponieren Makro
'

'
    Range("A3:A4").Select
    Selection.Copy
    Range("B4").Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True
End Sub

您可能正在寻找的“测试”是
IsNumeric()
测试。下面的代码建议假设您的数据在Sheet1上,而数字实际上是数字而不是文本。可能有一个更优雅的解决方案,但这确实有效:

Sub transposeNumbers()
Dim c As Range, LastRow As Long, TopN As Long, LastN As Long

LastRow = Sheet1.Range("A" & Rows.Count).End(xlUp).Row

For Each c In Sheet1.Range("A3:A" & LastRow)

    If IsNumeric(c.Offset(-1, 0)) = False Then
    
        TopN = c.Row
      
    Else
    
        If IsNumeric(c.Offset(1, 0)) = False Or c.Row = LastRow Then
        
            LastN = c.Row
            
            Sheet1.Range(Sheet1.Cells(TopN, 1), Sheet1.Cells(LastN, 1)).Copy
            c.Offset(0, 1).PasteSpecial Paste:=xlPasteAll, transpose:=True
            Application.CutCopyMode = False
        
        End If
    
    End If

Next c

End Sub

你好,凯文,谢谢,但在Sheet1.范围内(Sheet1.单元格(TopN,1),Sheet1.单元格(LastN,1))。复制vba时出现运行时错误1004。请检查,谢谢。