0

有人可以帮忙吗,我是VBA的新手,我想提前感谢您的帮助。如果有任何链接可以解决我的问题,请指出正确的方向。我已经在这里和其他网站上搜索过,但我找不到任何能让我开始的东西。我想创建循环遍历每一行中的单元格的 VBA 代码,并将它们转换为单独的行,如下图所示。

我有一个包含 12000 行数据和多列的 Excel 电子表格。对于每一行,我都有列“A”到“Q”作为静态字段。姓名、出生日期、身份证号码等从“Q”列到“DD”列,我在“City”和“RegDate”列上有重复数据,例如:City1、RegDate1、City2、RegDate2、City3、RegDate3、..& CityN , RegDateN。城市名称用作标题,数据单元格在每个人注册的城市下方显示“R”,并在其旁边的列中显示注册日期,否则没有条目。

我想转换这些数据,以便对于一个人注册的每个城市,我将有一个新的数据行显示静态字段“A”到“P”、“城市”和“RegDate”,即在“列”之后P” i 将只有两列“City”和“RegDate”。

我真的在努力创建从 Q 列循环到 DD 列的代码,当遇到“R”时创建一个新行,将行“A”列复制到“P”并在新列中插入城市名称“ Q”和新列“R”中的 RegDate,然后继续下一行,直到所有 12000 行都已转换。

任何让我开始的帮助将不胜感激,特别是在设置循环时,为遇到“R”的每条记录创建一个新角色。

4

1 回答 1

0

您是否考虑过将这些信息放在最右边的两个新列中(DEDF)?然后,您可以将Q隐藏到DD,或删除这些列。

至于执行此操作的循环代码:

Dim cr As Long 'current row
Dim cc As Long 'current column
For cr = 2 To 12000
  For cc = 17 To 108 Step 2
    If Cells(cr, cc).Value = "R" Then
      'make column 109 (DE) in current row = city name
      Cells(cr, 109).Value = Cells(1, cc).Value
      'make column 110 (DF) in current row = date of registration
      Cells(cr, 110).Value = Cells(cr, cc + 1).Value
    End If
  Next
Next
于 2013-09-03T15:50:46.850 回答