将数据从行移动到列 VBA

László Ádám 士兵

我有一份报告,其中有分配给电子邮件地址的会话名称。如果有两个会话名称分配给在报告中生成两行的电子邮件地址,我想创建一个报告,其中每个电子邮件地址只有一行,并且会话名称存储在彼此相邻的列中。

这是我到目前为止:

Sub Session()
i = Sheets(1).Range("a1048576").End(xlUp).Row
l = Sheets(2).Range("a1048576").End(xlUp).Row

For k = 2 To i
    For x = 2 To l
    EmailReg = Sheets(1).Range("c" & k).Value
    EmailAtt = Sheets(2).Range("c" & x).Value

    c = Sheets(1).Range("b" & k).Value
    d = Sheets(2).Range("A" & x).Value


        If EmailReg = EmailAtt Then
           Sheets(1).Range("D" & k).Value = Sheets(2).Range("D" & x).Value
           Sheets(2).Range("c" & x).Value = ""
        End If
        If EmailReg = EmailAtt Then
           Sheets(1).Range("E" & k).Value = Sheets(2).Range("D" & x).Value
           Sheets(2).Range("c" & x).Value = ""
        End If
        If EmailReg = EmailAtt Then
           Sheets(1).Range("f" & k).Value = Sheets(2).Range("D" & x).Value
           Sheets(2).Range("c" & x).Value = ""
        End If
        If EmailReg = EmailAtt Then
           Sheets(1).Range("g" & k).Value = Sheets(2).Range("D" & x).Value
           Sheets(2).Range("c" & x).Value = ""
        End If
        If EmailReg = EmailAtt Then
           Sheets(1).Range("h" & k).Value = Sheets(2).Range("D" & x).Value
           Sheets(2).Range("c" & x).Value = ""
        End If
        If EmailReg = EmailAtt Then
           Sheets(1).Range("i" & k).Value = Sheets(2).Range("D" & x).Value
           Sheets(2).Range("c" & x).Value = ""
        End If
        If EmailReg = EmailAtt Then
           Sheets(1).Range("j" & k).Value = Sheets(2).Range("D" & x).Value
           Sheets(2).Range("c" & x).Value = ""
        End If

    Next
Next
End Sub

它只将最后一个会话名称放在不同的列中,因此无法按预期工作。

输入如下所示:

  ___ A ____|___ B ____
1 | email1  | session1 
2 | email1  | session2 
3 | email1  | session3 
4 | email2  | session1 
5 | email2  | session2

输出应如下所示:

  ___ A ____|___ B ____|___ C ____|___ D ____
1 | email1  | session1 | session2 | session3 
2 | email2  | session1 | session2 | 
加里的学生

如果你从sheet2开始

在此处输入图片说明

并运行这个宏:

Sub ReArrange()
    Dim sh1 As Worksheet, sh2 As Worksheet
    Dim i As Long, j As Long, k As Long

    Set sh1 = Sheets(1)
    Set sh2 = Sheets(2)
    sh1.Cells(1, 1) = sh2.Cells(1, 1)
    sh1.Cells(1, 2) = sh2.Cells(1, 2)
    k = 3
    j = 1

    For i = 2 To Rows.Count
        If sh2.Cells(i, 1).Value = "" Then Exit Sub
        If sh2.Cells(i, 1) = sh2.Cells(i - 1, 1) Then
            sh1.Cells(j, k) = sh2.Cells(i, 2)
            k = k + 1
        Else
            j = j + 1
            sh1.Cells(j, 1) = sh2.Cells(i, 1)
            sh1.Cells(j, 2) = sh2.Cells(i, 2)
            k = 3
        End If
    Next i
End Sub

你会在sheet1 中得到这个

在此处输入图片说明

此代码并没有删除原始数据。您可能需要更新它以适应标题等。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Excel VBA - 如何将列复制或移动到单行?

使用 VBA 将数据移动到最左边的空白单元格

Excel VBA代码将数据从4个特定的单元格移动到下一个可用行中的另一个工作表

VBA方法excel根据值将单元格移动到另一行

VBA 将特定行移动到唯一的新工作簿

Excel VBA代码可将大量数据从多个范围移动到列

如何从 Excel VBA 移动到我的 Access 数据库中的下一列

VBA宏根据条件将单元格移动到下一列的顶部

VBA代码仅移动新粘贴的数据行的列

将numpy数组从VBA移动到Python并返回

Excel VBA,将鼠标移动到不同的单元格

VBA:自动将图表移动到单个工作表

使用Pandas将数据从行移动到创建的列-Python

python pandas,转换数据集,将行移动到列

如何重塑数据,将行移动到新列?

如何将重复的列数据移动到行中

用于将已完成的行移动到另一张工作表的VBA代码会导致奇怪的行为

VBA将数据行转置为列

将数据从多列移动到单行

将列移动到行 R

VBA代码,用于根据特定的单元格条件将单元格从一列移动到另一列

Excel / VBA如何在上次使用的单元格之后将数据从一个工作表移动到另一个工作表?

根据另一列将数据从行移动到列

无法使用数据切割单元格并移动到不同的工作表 VBA

在Excel VBA中将数据从表动态移动到另一个表

Selenium VBA - 如何将鼠标移动到位置(x,y)?

Excel VBA:将工作表移动到新工作簿,同时保持工作表对象关联

VBA:将命名工作表移动到新工作簿并保存

如何使用vba创建规则以将已发送邮件移动到文件夹?