Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10778 / 76734 ←次へ | 前へ→

【71501】Re:データの縦から横方向への置き換え
回答  UO3  - 12/3/13(火) 10:15 -

引用なし
パスワード
   ▼ドカ さん:

>マクロのでは、定型のデータ フォームでないと対応できないので、今回質問してみました。

ですから、私が申し上げた手作業の操作をマクロ記録して、それをお化粧直しすればよろしいかと思いますが
以下、一例です。
Sheet1のデータをSHeet2に転記しています。

Sub sample1()
  Dim x As Long
  Dim w As Long
  Dim j As Long
  Dim sh As Worksheet
  Dim c As Range
  
  Application.ScreenUpdating = False
  
  Set sh = Sheets("Sheet2")  '転記シート
  sh.Cells.ClearContents   '転記シートをクリア
  
  With Sheets("Sheet1")  '元シート
    x = .Cells(1, .Columns.Count).End(xlToLeft).Column '元シートの列数
    w = x + 2                  '作業列開始列番号
    '元シートの作業列に元シートのA列の一意の値を抽出
    .Columns("A:A").AdvancedFilter Action:=xlFilterCopy, _
              CopyToRange:=.Cells(1, w), Unique:=True
    If (x - 1) * (.Cells(1, w).CurrentRegion.Rows.Count - 1) > .Columns.Count Then
      MsgBox "転記するには項目の桁数が多すぎます"
    Else
      .Cells(1, w + 1).Value = .Cells(1, w).Value '抽出用タイトル
      '抽出領域 抽出すべきタイトルをセット
      .Cells(1, w + 3).Resize(, x - 1).Value = .Cells(1, 2).Resize(, x - 1).Value
      '一意の値を順に取り出して、転記シートに転記
      j = 1    '転記シートの転記列。最初は 1。
      For Each c In .Range(.Cells(2, w), .Cells(.Rows.Count, w).End(xlUp))
        .Cells(2, w + 1).Value = c.Value  '抽出条件セット
        'この値に対するデータを抽出
        .Columns("A:D").AdvancedFilter Action:=xlFilterCopy, _
          CriteriaRange:=.Cells(1, w + 1).Resize(2), _
          CopyToRange:=.Cells(1, w + 3).Resize(, x - 1), Unique:=False
        '転記シートに転記
        With .Cells(1, w + 3).CurrentRegion
          sh.Cells(1, j).Value = c.Value
          sh.Cells(2, j).Resize(.Rows.Count, .Columns.Count).Value = .Value
          j = j + .Columns.Count  '次の転記列ポジション
        End With
      Next
    End If
    .Cells(1, w).CurrentRegion.Clear    '作業域クリア
    .Cells(1, w + 3).CurrentRegion.Clear   '作業域クリア
  End With
  
  sh.Select
  Set sh = Nothing
  Application.ScreenUpdating = True
  MsgBox "処理終了しました"
  
End Sub

15 hits

【71493】データの縦から横方向への置き換え ドカ 12/3/12(月) 17:21 質問
【71495】Re:データの縦から横方向への置き換え UO3 12/3/12(月) 22:32 発言
【71497】Re:データの縦から横方向への置き換え ドカ 12/3/13(火) 7:48 発言
【71496】Re:データの縦から横方向への置き換え UO3 12/3/12(月) 22:39 発言
【71498】Re:データの縦から横方向への置き換え ドカ 12/3/13(火) 7:56 発言
【71501】Re:データの縦から横方向への置き換え UO3 12/3/13(火) 10:15 回答
【71502】Re:データの縦から横方向への置き換え UO3 12/3/13(火) 10:19 発言
【71517】Re:データの縦から横方向への置き換え ドカ 12/3/14(水) 8:06 お礼
【71499】Re:データの縦から横方向への置き換え ドカ 12/3/13(火) 9:48 お礼

10778 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free