Excel VBA質問箱 IV

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

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


63653 / 76738 ←次へ | 前へ→

【17680】Re:文字列のカンマ区切りとワークシート表のセル並び替え
回答  かみちゃん  - 04/9/4(土) 21:30 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>>もし、Sheet2への出力がかみちゃんにとって大変な作業であれば、あまりご迷惑をおかけするのも申し訳けありませんので、Sheet1への出力でもかまいません。
>
>改造に少しお時間をいただきたいと思いますが、
>Sheet1への出力ではなく、Sheet2を新規に追加する仕組みではいけませんか?

とりあえず、Sheet1を作業用シートにコピー(シートのコピー)して、作業用シート上で変形処理をして、結果をSheet2へコピーしたのち、必要に応じて罫線処理させるようにしてみました。
これであれば、前回の応用ということになります。

なお、「行列が任意」については、A1を含む空白行、空白列で囲まれたセル範囲になっていますので、A1がその範囲に含まれているという制約だけになります。

Sub Macro1()
  Dim MaxRow As Long, MaxColumn As Integer, MaxColumnStart As Integer
  Dim RowNo As Long, ColumnNo As Integer
  
  '作業用シートにコピー '★
  Sheets("Sheet1").Copy After:=Sheets("Sheet1") '★
  '変形前の最終列を取得
  '表の途中に空白行、空白列がないことが前提
  MaxColumn = Range("A1").CurrentRegion.Columns.Count
  MaxColumnStart = MaxColumn
  '最終列をカンマ区切りで分割
  Columns(MaxColumn).Select
  Selection.TextToColumns Destination:=Cells(1, MaxColumn), DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
    Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
    :=Array(1, 1), TrailingMinusNumbers:=True
  '変形後の表の大きさを取得
  MaxColumn = Range("A1").CurrentRegion.Columns.Count
  MaxRow = Range("A1").CurrentRegion.Rows.Count
  '変形処理(列方向へ挿入したセルを行方向へ展開)
  RowNo = 2
  Do Until RowNo > MaxRow
   For ColumnNo = 3 To MaxColumn
    If Cells(RowNo, ColumnNo).Value <> "" Then
     If ColumnNo > 3 Then
      Rows(RowNo).Copy
      Rows(RowNo + 1).Insert Shift:=xlDown
      RowNo = RowNo + 1
      MaxRow = MaxRow + 1
      Application.CutCopyMode = False
      Cells(RowNo - 1, ColumnNo).Copy Destination:=Cells(RowNo, 3)
     End If
    Else
     Exit For
    End If
   Next
   RowNo = RowNo + 1
  Loop
  '列方向へ挿入した列全体を削除
  Range(Columns(4), Columns(MaxColumn)).Delete Shift:=xlToLeft
  '作業シートからSheet2へコピーする。コピーしたら作業シートを削除 '★
  Range("A1").CurrentRegion.Copy Destination:=Sheets("Sheet2").Range("A1") '★
  Application.DisplayAlerts = False '★
  ActiveSheet.Delete '★
  Application.DisplayAlerts = True '★
  Sheets("Sheet2").Select '★
  Range("A1").Select

  '罫線処理が必要であれば、ここから記述
  '変形後の表全体の罫線処理(マクロの記録により記述)
  Range("A1").CurrentRegion.Select
  '〜以下省略 以下のURLに掲載のコードを参照〜
  'http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=17548;id=excel
End Sub
0 hits

【17647】文字列のカンマ区切りとワークシート表のセル並び替え しん 04/9/4(土) 0:13 質問
【17650】Re:文字列のカンマ区切りとワークシート表... Kein 04/9/4(土) 1:08 回答
【17670】Re:文字列のカンマ区切りとワークシート表... しん 04/9/4(土) 19:07 質問
【17673】Re:文字列のカンマ区切りとワークシート表... かみちゃん 04/9/4(土) 19:37 回答
【17676】Re:文字列のカンマ区切りとワークシート表... しん 04/9/4(土) 20:36 質問
【17677】Re:文字列のカンマ区切りとワークシート表... かみちゃん 04/9/4(土) 20:55 回答
【17681】Re:文字列のカンマ区切りとワークシート表... しん 04/9/4(土) 21:57 質問
【17682】Re:文字列のカンマ区切りとワークシート表... かみちゃん 04/9/4(土) 22:18 発言
【17683】Re:文字列のカンマ区切りとワークシート表... かみちゃん 04/9/4(土) 22:41 回答
【17684】Re:文字列のカンマ区切りとワークシート表... Kein 04/9/4(土) 22:50 回答
【17685】Re:文字列のカンマ区切りとワークシート表... Kein 04/9/4(土) 22:56 回答
【17686】Re:文字列のカンマ区切りとワークシート表... Kein 04/9/4(土) 23:00 発言
【17687】Re:文字列のカンマ区切りとワークシート表... かみちゃん 04/9/4(土) 23:08 発言
【17688】Re:文字列のカンマ区切りとワークシート表... Kein 04/9/4(土) 23:42 発言
【17690】Re:文字列のカンマ区切りとワークシート表... Kein 04/9/4(土) 23:48 回答
【17691】Re:文字列のカンマ区切りとワークシート表... しん 04/9/4(土) 23:59 お礼
【17678】Re:文字列のカンマ区切りとワークシート表... Kein 04/9/4(土) 21:23 回答
【17654】Re:文字列のカンマ区切りとワークシート表... かみちゃん 04/9/4(土) 11:30 回答
【17671】Re:文字列のカンマ区切りとワークシート表... かみちゃん 04/9/4(土) 19:25 回答
【17674】Re:文字列のカンマ区切りとワークシート表... しん 04/9/4(土) 19:58 質問
【17675】Re:文字列のカンマ区切りとワークシート表... かみちゃん 04/9/4(土) 20:29 回答
【17680】Re:文字列のカンマ区切りとワークシート表... かみちゃん 04/9/4(土) 21:30 回答
【17692】Re:文字列のカンマ区切りとワークシート表... しん 04/9/5(日) 0:04 お礼
【17672】Re:文字列のカンマ区切りとワークシート表... しん 04/9/4(土) 19:36 質問

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