如何在Excel中将数据移动到另一个工作表中的8个连续单元格?

时间:2013-07-20 10:43:41

标签: excel

如何在Excel中将数据(一个人的姓名,文本数据)移动到同一工作簿中另一个工作表中的8个垂直连续单元格?

我不是程序员,只是用谷歌搜索VBA所代表的东西;所以,如果有人建议一些代码,我需要告诉他们该怎么做!

我有一个2,000个名字的列表(工作表A列中每个单元格中有一个名字),我希望每个名称出现8次,在一个低于另一个的块中,在块之间有一个备用行,在列中另一个工作表的C.我需要给每个块一个连续的降序数,块中的每一行都有相同的数字。是否有自动化此过程的公式?最后,Col W需要重复Col C,但是在第6和第6天中有空单元格。每个街区的第8行。

2 个答案:

答案 0 :(得分:1)

您不需要VBA来执行此操作。在第二张纸中输入并复制下面的公式将执行您想要的操作。请注意,它假定工作表1列表中的第一个名称位于单元格A1中。

  =IFERROR(INDEX(Sheet1!A:A,IF(MOD(ROW(A1),9)=0,"",ROUNDUP(ROW(A1)/9,0)),1),"")

此方法可应用于任何数据列。因此,要按降序对八行的块进行编号,可以在原始名称数据旁边添加连续数字的列(比如说Sheet1的B列)。使用Excel的排序功能按降序对数字列进行排序,然后在第二个表中使用以下公式。

  =IFERROR(INDEX(Sheet1!B:B,IF(MOD(ROW(A1),9)=0,"",ROUNDUP(ROW(A1)/9,0)),1),"")

请注意,与原始公式的唯一区别是列引用,它已从`Sheet1!A:A更改为Sheet1!B:B。

要采取进一步的步骤,在8个块中的指定位置添加空格,可以进一步详细说明这些公式,但这种方法很快变得难以处理。我建议改为使用以下更简单的公式,它在每​​个8个名字的第6行中留空。

  =IF(A1<>"",IF(MOD(ROW(A1)-6,9)=0,"",A1),"")

您可以将公式应用于已分解为八个块的名称列(在第二个表中),而不是在原始范围上运行。

如果你想在另一个位置添加空格,比如说8,将简单表达式 - 修改为在MOD子句中使用8而不是6 - 应用于添加了空白的名称列第六位。

Worksheet with formulas and results

完成所有这些步骤后,您可以复制并特殊粘贴为多个位置空白的名称的最终名称列表,然后删除中间列。

答案 1 :(得分:1)

我试图解决VBA中的问题。我在Col A只为16个名字做了这个。根据你的方便,这个数字可以增加到任何限制。 A列中的名称重复8次,在Sheet2的C列中的8行块之间有一个空行。以下是列表:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
cnt = 1
cmt = 8
        For J = 1 To 16
            For k = 1 To 8
            Sheet2.Cells(cnt, 3) = Cells(J, 1)
            Sheet2.Rows(cmt).Insert
                cnt = cnt + 1
            Next
            cmt = cmt + 8

        Next

End Sub