根据列生成行

根据列生成行

我有一张这样的起始表:

在此处输入图片描述

我需要为第三列中的每个字母生成一行。到目前为止,我所做的就是将该信息提取到单独的列中,如下所示:

在此处输入图片描述

我的目标基本上是得到这样的表格:

在此处输入图片描述

我该如何实现这一点?我考虑过使用数据透视表,但我不知道如何以及在何处分配不同的列才能获得我需要的内容。

注意:我不喜欢使用宏,因为我没有使用它们的经验,而且我必须定期在不同的表结构上执行此类操作,其中“字母”列并不像我的示例那样简单明了(这意味着我无法通过编程找出哪一行需要相乘或不需要相乘)。我必须不断重写代码。如果我能以“普通”用户的身份做到这一点,那就更好了。

答案1

编辑:添加了屏幕截图以帮助查找选项位置

Get&Transform从选项卡中使用Data。选择From Table/Range

在此处输入图片描述

  • Power Query 用户界面将打开
  • 选择“字母列”并选择“按字符数拆分列”(其中字符数为一 (1))。

在此处输入图片描述

  • 选择 Firstname 和 Lastname 列
  • 选择取消旋转其他列。

在此处输入图片描述

  • 删除属性Unpivot 之后创建的列。

在此处输入图片描述

  • 关闭并加载

完成此操作后,您可以将数据添加到表并重新运行查询(如果需要)。

答案2

如果你从此开始Sheet1

在此处输入图片描述

并运行此宏:

Sub MakeReport()
    Dim k As Long, i As Long, N As Long, s1 As Worksheet, s2 As Worksheet
    Dim v1 As String, v2 As String, lt As String, L As Long, ll As Long

    Set s1 = Sheets("Sheet1")
    Set s2 = Sheets("Sheet2")
    N = s1.Cells(Rows.Count, "A").End(xlUp).Row
    k = 1
    For i = 2 To N
        v1 = s1.Cells(i, 1).Value
        v2 = s1.Cells(i, 2).Value
        lt = s1.Cells(i, 3).Value
        L = Len(lt)
        For ll = 1 To L
            s2.Cells(k, 1) = v1
            s2.Cells(k, 2).Value = v2
            s2.Cells(k, 3) = Mid(lt, ll, 1)
            k = k + 1
        Next ll
    Next i
End Sub

您将在以下位置获得它Sheet2

在此处输入图片描述

相关内容