|    | 
     ▼YN62 さん 今晩は 
これでできると思います 
 
Sheet2 で RRR が重複しているのが気になりますが、 
試してみてください。 
 
Sub 異なる表組みへの転記() 
Dim k As Integer 
Dim r1 As Range, r2 As Range 
Dim 範囲11 As Range, 範囲12 As Range, 範囲13 As Range 
Dim 範囲21 As Range, 範囲22 As Range 
Dim UnionRng1 As Range, UnionRng2 As Range 
  ' 
  With Sheets("Sheet1") 
    Set 範囲11 = .Range("A4", .Cells(65536, "A").End(xlUp).Offset(-1)) 
    Set 範囲12 = .Range("C4", .Cells(65536, "C").End(xlUp).Offset(-1)) 
    Set 範囲13 = .Range("E4", .Cells(65536, "E").End(xlUp).Offset(-1)) 
  End With 
  With Sheets("Sheet2") 
    Set 範囲21 = .Range("A2", .Cells(65536, "A").End(xlUp).Offset(-1)) 
    Set 範囲22 = .Range("D2", .Cells(65536, "D").End(xlUp).Offset(-1)) 
  End With 
  ' 
  Set UnionRng1 = Union(範囲11, 範囲12, 範囲13) 
  Set UnionRng2 = Union(範囲21, 範囲22) 
  ' 
  For Each r1 In UnionRng1 
  For Each r2 In UnionRng2 
    If r1.Value = r2.Value Then 
      r2.Offset(, 1).Value = r1.Offset(, 1).Value 
    End If 
  Next 
  Next 
  ' 
  Set 範囲11 = Nothing 
  Set 範囲12 = Nothing 
  Set 範囲13 = Nothing 
  Set UnionRng1 = Nothing 
  Set UnionRng2 = Nothing 
End Sub 
 
 
>シート1の三段組のデータを 
>シート2に二段組のデータに仕上げたく思っています。 
> 
>シート1の行は30行くらいです。 
> 
>シート1と2の合計欄にはシート関数(Σ)が入っています。 
> 
>シート1 
>氏名 点数1    氏名 点数1    氏名 点数 1     
>AAA   5    FFF  4      YYY  5     
>CCC   7    GGG  3      OOO  6     
>BBB   8    KKK  7      PPP  10     
>DDD   8    SSS  6      RRR  4     
>合計  29    合計  20     合計  25     
> 
>シート2 
>    A    B    C    D    E    F 
>1    氏名  点数1 点数2  氏名  点数1  点数 2 
>2    AAA    5       KKK    7     
>3    CCC    7       RRR    4     
>4    DDD    8       OOO    6     
>5    BBB    10        RRR    4     
>6    GGG    3       SSS    6     
>7    FFF    4                 
>8    合計   37    0   合計   27    0 
> 
>※氏名の順番は、シート1とシート2は異なります。 
>※シート2には氏名PPPはこの集計にはたまたま有りませんでした     
>※点数2はシート1と同じような別のデータがあり、同じようにこのシートの氏名を基準に順次貼り付けてシート2の完成です。 
> 
> 
>自分なりにマクロのコードを書きましたが、列がまたがってくるとどのように書けばよいのか分かりません。ご指導の程お願いいたします。 
> 
> 
>Sub 異なる表組みへの転記() 
> 
>Dim k As Integer 
>Dim R As Range 
>Dim MyR As Range 
> 
>For k = 2 To 31 
> 
>Set MyR = Range(("A4"), Cells(65536, 1).End(xlUp)) 
>For Each R In MyR 
>If R.Value = Sheets(2).Cells(k, 1).Value Then 
>Sheets(2).Cells(k, 1).Offset(, 1).Value = R.Offset(, 1).Value 
> 
>End If 
> 
>Next 
>Next 
> 
>End Sub 
 | 
     
    
   |