電子メールアドレスに割り当てられたセッション名があるレポートがあります。レポートに2つの行を生成した電子メールアドレスに2つのセッション名が割り当てられている場合は、各電子メールアドレスに対して行が1つしかなく、セッション名が互いに隣接する列に格納されているレポートを作成します。行から列にデータを移動するVBA
これは私がこれまで持っているものです。
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 |
https://www.extendoffice.com/documents/excel/3358-excel-transpose-unique-values.html – Masoud