Excel VBA質問箱 IV

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

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


47039 / 76732 ←次へ | 前へ→

【34658】Re:複数にわたるデータを一行に纏める方法
回答  Kein  - 06/2/9(木) 13:34 -

引用なし
パスワード
   Sheet1 にその表があって、Sheet2(空白シート) に転記するとします。
以下のコードを試してみて下さい。速度は特に考慮していませんが、20000行でも
それほど遅いとは感じないはずです。

Sub Test_Align()
  Dim MyR1 As Range, MyR2 As Range, C As Range
  Dim i As Long, x As Long
  Dim CkV As String, MyV As Variant
 
  Application.ScreenUpdating = False
  With Sheets("Sheet1")
   With .Range("A1", .Range("A65536").End(xlUp)).Offset(, 26)
     .Formula = "=IF(MID($A1,4,1)=""名"",1,""A"")"
     Set MyR1 = .SpecialCells(3, 1)
     Set MyR2 = .SpecialCells(3, 2)
     .ClearContents
   End With
   Intersect(MyR1.EntireRow, .Range("A:A")) _
   .Copy Sheets("Sheet2").Range("A2")
  End With
  Sheets("Sheet2").Range("B1:H1").Value = Array("合計", "内訳1", _
  "内訳2", "内訳3", "内訳4", "内訳5", "内訳6"): i = 2
  For Each C In MyR2.Areas
   CkV = C.Offset(, -26).Range("A1").Value
   MyV = WorksheetFunction.Transpose(C.Offset(, -25).Value)
   If Right$(CkV, 2) = "合計" Then
     x = 2
   Else
     x = 3
   End If
   Sheets("Sheet2").Cells(i, x).Resize(, UBound(MyV)).Value = MyV
   i = i + 1
  Next
  Application.ScreenUpdating = True
  Set MyR1 = Nothing: Set MyR2 = Nothing
End Sub
2 hits

【34644】複数にわたるデータを一行に纏める方法 初心者m(__)m 06/2/9(木) 9:31 質問
【34649】Re:複数にわたるデータを一行に纏める方法 ちくたく 06/2/9(木) 10:31 発言
【34674】Re:複数にわたるデータを一行に纏める方法 初心者m(__)m 06/2/9(木) 16:56 お礼
【34658】Re:複数にわたるデータを一行に纏める方法 Kein 06/2/9(木) 13:34 回答
【34673】Re:複数にわたるデータを一行に纏める方法 初心者m(__)m 06/2/9(木) 16:53 お礼
【34784】Re:複数にわたるデータを一行に纏める方法 初心者2 06/2/12(日) 15:07 質問
【34786】Re:複数にわたるデータを一行に纏める方法 Kein 06/2/12(日) 18:01 発言
【34789】Re:複数にわたるデータを一行に纏める方法 初心者2 06/2/13(月) 7:48 質問
【34787】Re:複数にわたるデータを一行に纏める方法 Hirofumi 06/2/12(日) 18:50 回答

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