【问题标题】:Excel VBA Code to transpose multiple columns into multiple rowsExcel VBA代码将多列转换为多行
【发布时间】:2013-09-06 16:20:34
【问题描述】:

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

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

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

我真的很难创建从 Q 列循环到 DD 列的代码,当遇到“R”时创建一个新行将行“A”列复制到“P”并在新列“Q”和新列“R”中的 RegDate,然后移动到下一行,直到所有 12000 行都已转换。

非常感谢任何帮助我入门的帮助,尤其是在设置循环时,为遇到“R”的每条记录创建一个新角色。

【问题讨论】:

  • 您可能需要考虑为这些数据使用数据库。如果你有 Excel,也许你有 Access?

标签: vba excel


【解决方案1】:

您是否考虑过将这些信息放在最右边的两个新列中(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

【讨论】:

  • 非常感谢@AaronThomas,这正是我想要的。我已经对其进行了编辑以添加其他静态字段,现在它可以正常工作了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-21
  • 1970-01-01
  • 2013-05-27
  • 1970-01-01
  • 2021-07-25
  • 1970-01-01
相关资源
最近更新 更多