Excel VBA質問箱 IV

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

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


10719 / 76734 ←次へ | 前へ→

【71560】Re:表の整理
発言  UO3  - 12/3/16(金) 23:09 -

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

前トピでは、列を取り違えていてごめんなさいね。
さて、「何か変じゃないですか」さんのご指摘、その通りだと思います。
思いますが、私も、数日、PC環境のないところにでかけますので
とりあえず書いたものをアップしておきます。
また、「こんなわけのわからんコードはお断り」といわれそうですが。
必要なら、旅から戻った後、前トピのSample3のようなコードも考えてみますが。

Sub Sample()
  Dim v As Variant
  Dim x As Long
  Dim y As Long
  Dim dic As Object
  Dim dicRow As Object
  Dim w() As String
  Dim z As Variant
  Dim i As Long
  Dim j As Long
  Dim k As Long
  Dim n As Long
  Dim myName As Variant
  Dim rowKey As String
  
  Application.ScreenUpdating = False
  
  Set dic = CreateObject("Scripting.Dictionary")
  Set dicRow = CreateObject("Scripting.Dictionary")
  
  With Sheets("Sheet1")  '元シート
    With .Range("A1").CurrentRegion
      x = .Columns.Count   '表の列数
      y = .Rows.Count     '表の行数
    End With
    
    ReDim w(1 To x)
    
    For i = 2 To y
      For j = 1 To y Step 3
        myName = .Cells(i, j).Value
        If Len(myName) > 0 Then '空白はスキップ
          If Not dic.exists(myName) Then Set dic(myName) = CreateObject("Scripting.Dictionary")
          rowKey = myName & vbTab & j
          dicRow(rowKey) = dicRow(rowKey) + 1
          n = dicRow(rowKey)
          If Not dic(myName).exists(n) Then dic(myName)(n) = w '行スケルトン
          z = dic(myName)(n)
          z(j) = myName
          z(j + 1) = .Cells(i, j + 1).Value
          z(j + 2) = .Cells(i, j + 2).Value
          dic(myName)(n) = z
        End If
      Next
    Next
    
  End With
  
  i = 2
  With Sheets("Sheet2")  '転記シート
    .Cells.ClearContents
    .Range("A1").Resize(, x).Value = Sheets("Sheet1").Range("A1").Resize(, x).Value 'タイトル行コピー
    For Each myName In dic
      .Range("A" & i).Resize(dic(myName).Count, x).Value = _
        WorksheetFunction.Transpose(WorksheetFunction.Transpose(dic(myName).items))
      i = i + dic(myName).Count
    Next
    .Select
  End With
  
  Set dic = Nothing
  Set dicRow = Nothing
  
  Application.ScreenUpdating = True
  MsgBox "転記完了です"
          
End Sub

6 hits

【71555】表の整理 ドカ 12/3/16(金) 20:43 質問
【71557】Re:表の整理 ドカ 12/3/16(金) 20:54 発言
【71559】Re:表の整理 何か変じゃないですか 12/3/16(金) 22:44 発言
【71561】Re:表の整理 ドカ 12/3/17(土) 4:42 発言
【71560】Re:表の整理 UO3 12/3/16(金) 23:09 発言
【71562】Re:表の整理 ドカ 12/3/17(土) 4:57 お礼
【71564】Re:表の整理 UO3 12/3/17(土) 9:39 回答
【71671】Re:表の整理 ドカ 12/3/27(火) 14:10 質問
【71672】Re:表の整理 UO3 12/3/27(火) 16:43 発言
【71673】Re:表の整理 UO3 12/3/27(火) 17:20 発言
【71674】Re:表の整理 ドカ 12/3/27(火) 20:11 発言
【71675】Re:表の整理 ドカ 12/3/28(水) 9:08 お礼
【71676】Re:表の整理 UO3 12/3/28(水) 10:34 発言
【71677】Re:表の整理 ドカ 12/3/28(水) 11:10 発言
【71678】Re:表の整理 UO3 12/3/28(水) 15:08 発言
【71679】Re:表の整理 UO3 12/3/28(水) 15:13 発言
【71683】Re:表の整理 ドカ 12/3/28(水) 20:34 お礼
【71688】Re:表の整理 ドカ 12/3/30(金) 8:29 質問
【71689】Re:表の整理 ドカ 12/3/30(金) 9:06 質問
【71690】Re:表の整理 UO3 12/3/30(金) 10:27 発言
【71691】Re:表の整理 UO3 12/3/30(金) 11:46 発言
【71692】Re:表の整理 UO3 12/3/30(金) 21:10 発言
【71720】Re:表の整理 UO3 12/4/2(月) 14:10 発言
【71724】Re:表の整理 ドカ 12/4/3(火) 7:59 お礼
【71728】Re:表の整理 UO3 12/4/3(火) 13:16 発言
【71731】Re:表の整理 UO3 12/4/3(火) 16:54 発言
【71725】Re:表の整理 ドカ 12/4/3(火) 8:15 質問
【71726】Re:表の整理 UO3 12/4/3(火) 12:39 発言
【71727】Re:表の整理 UO3 12/4/3(火) 12:44 発言
【71736】Re:表の整理 ドカ 12/4/4(水) 15:59 お礼

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