Excel 如何根据范围内的计数复制数据?

Excel 如何根据范围内的计数复制数据?,excel,vba,Excel,Vba,为了计算一行中有多少单元格有数据,我正在尝试构建以下代码。根据计数,我需要复制与计数相同数量的单元格。例如,如果计数是3,那么我需要复制数据3次 n=工作表(“Sheet1”).范围(“C2:P2”).单元格.特殊单元格(xlCellTypeConstants).计数 要复制三次的数据位于表1 A2:B2中,需要复制到表2 A2:B2中 我需要继续这样做,直到我在sheet1中找到一个空行 非常感谢您的帮助。要做到这一点,您需要遍历Sheet1中包含数据的每一行。然后,您需要通过该行计算C:P中

为了计算一行中有多少单元格有数据,我正在尝试构建以下代码。根据计数,我需要复制与计数相同数量的单元格。例如,如果计数是3,那么我需要复制数据3次

n=工作表(“Sheet1”).范围(“C2:P2”).单元格.特殊单元格(xlCellTypeConstants).计数

要复制三次的数据位于表1 A2:B2中,需要复制到表2 A2:B2中 我需要继续这样做,直到我在sheet1中找到一个空行
非常感谢您的帮助。

要做到这一点,您需要遍历Sheet1中包含数据的每一行。然后,您需要通过该行计算
C:P
中填充的列数。然后将其粘贴到表2中,粘贴次数不限

这将类似于:

Sub duplicateData()
    Dim rngReadRows As Range
    Dim rngWrite As Range
    Dim rngCell As Range
    Dim timesToPaste As Integer
    Dim pasteCount As Integer
    Dim arrMonth() As Date


    'Set up the rows that we will read from
    Set rngReadRows = Sheet1.Range("A2:A10").Rows

    'Set up the first cell/row we will write to
    Set rngWrite = Sheet2.Range("A2")



    'Now loop through each row from which we will read
    For Each rngReadRow In rngReadRows.Rows

        'figure out how many times we need to paste this thing
        timesToPaste = Application.WorksheetFunction.CountA(rngReadRow.Offset(, 2).Resize(1, 13))

        'redim the date array to the size we need
        ReDim arrMonth(1 To timesToPaste)

        'Fill the array
        i = 1
        For Each rngCell In Sheet1.Range("C1:P1").Cells
            If rngReadRow.Cells(1, rngCell.Column).Value <> "" Then
                arrMonth(i) = rngCell.Value
                i = i + 1
            End If

        Next rngCell

        'Loop however many number of times
        For pasteCount = 1 To timesToPaste

            'Paste it
            rngReadRow.Resize(1, 2).Copy Destination:=rngWrite

            'Get the date
            rngWrite.Resize(1, 1).Offset(, 2).Value = arrMonth(pasteCount)

            'Increment to next row
            Set rngWrite = rngWrite.Offset(1)
        Next pasteCount
    Next rngReadRow
End Sub
子重复数据()
暗rngReadRows作为范围
暗rngWrite As范围
Dim rngCell As范围
Dim timesToPaste为整数
将计数设为整数
将月份()指定为日期
'设置我们将从中读取的行
设置rngReadRows=Sheet1.范围(“A2:A10”).行
'设置要写入的第一个单元格/行
设置rngWrite=Sheet2.范围(“A2”)
'现在循环浏览我们将要阅读的每一行
对于rngReadRows.行中的每个rngReadRow
算出我们需要粘贴多少次这个东西
timesToPaste=Application.WorksheetFunction.CountA(rngReadRow.Offset(,2).Resize(1,13))
'将日期数组重新分配到所需的大小
ReDim ARR月(1至timesToPaste)
'填充数组
i=1
表1.范围(“C1:P1”)单元格中的每个RNG单元格
如果rngReadRow.Cells(1,rngCell.Column).Value为“”,则
arrMonth(i)=rngCell.值
i=i+1
如果结束
下一个rngCell
'循环多少次
对于pasteCount=1到timesToPaste
“粘贴它
rngReadRow.Resize(1,2).复制目标:=rngWrite
“知道日期了吗
rngWrite.Resize(1,1).偏移量(,2).值=arrmount(粘贴计数)
'增加到下一行
设置rngWrite=rngWrite.Offset(1)
下一个粘贴计数
下一站
端接头

复制三次是什么意思。
A2:B2中的细胞计数怎么可能是三个?
C2:P2
与此有什么关系?你能分享一些样本数据并解释得更清楚一点吗。网站
ozh.github.io/ascii tables/
将帮助格式化数据(将示例数据粘贴到顶部框后选择excel),这样可以很好地粘贴到此处。我正在计算包含C2:P2范围内数据的单元格数,根据该结果,我需要将A2:B2中的任何文本复制三次“这只是countOK结果的一个例子。然后“复制三次”。你说你想把它复制到
Sheet2!A2:B2
。如何将两个单元格的内容复制到两个单元格的范围内。三次。它会进入
A2:B2
,然后进入
A3:B3
,然后进入
A4:B4
。然后,当我们阅读
Sheet1
中的下一行时,我们开始粘贴多次到
A5:B5
。。等等?这对我这样的业余爱好者来说很有意义。但是,在设置rngWrite=Sheet2.Range(“A2”)时获取运行时错误424,因此。。这里我使用的是工作表的代码名。在VBE中,确保“视图>>项目资源管理器”窗格处于打开状态。您可以看到每个选项卡名称的
Sheet1
Sheet2
名称(选项卡名称为括号中的零件),代码名称为外部零件。有时,如果您删除了选项卡并保存了所有内容,您将看到
Sheet23(Sheet2)
或类似的傻事。所以标签名“Sheet2”实际上是codename
Sheet23
。根据需要改变。我怀疑您的工作簿中没有
Sheet2
代码名。您是对的,我刚刚不得不在您的代码中更改为Sheet3!当我现在运行它时,它没有显示任何错误,但似乎发生的是,它似乎在计算所有行,而不是一次只计算一行,因为我在测试表中填充的列的总数是11,并且它似乎将数据以A2:B2的形式复制了11次,而不是仅复制了三次,这三次是为行填充的列的总数A哦,是的。。。我完全搞砸了。一秒钟,我将修复。为每个
循环打开
,以迭代
。行
。还切换了
rngReadRow.Resize(1,2)。复制
以引用正确的变量。。这完全是胡说八道。现在应该可以工作了,只要再翻一次表号就行了。