-1

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

我不是程序员,只是用谷歌搜索了 VBA 的含义;所以如果有人建议一些代码,我需要告诉它如何处理它!

我有一个包含 2,000 个名称的列表(工作表 A 列中每个单元格中的一个名称),并且我希望每个名称出现 8 次,在一个块中,在另一个块中,块之间有一个备用行,在另一个 C 列中工作表。我需要给每个块一个连续的递减数字,块中的每一行都具有相同的数字。有没有一个公式可以自动化这个过程?最后,Col W 需要重复 Col C,但每个块的第 6 行和第 8 行有空单元格。

4

2 回答 2

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 个块中的指定位置添加空白,可以进一步阐述这些公式,但这种方法很快就会变得笨拙。我会推荐以下更简单的公式,它在每​​个八个名字的块的第六行放置一个空白。

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

您可以将公式应用于已经被分成八个块的名称列(在第二张表中),而不是对原始范围进行操作。

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

带有公式和结果的工作表

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

于 2013-07-20T11:13:06.013 回答
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
于 2013-07-20T14:02:41.947 回答