Excel VBA質問箱 IV

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

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


63661 / 76738 ←次へ | 前へ→

【17672】Re:文字列のカンマ区切りとワークシート表のセル並び替え
質問  しん E-MAIL  - 04/9/4(土) 19:36 -

引用なし
パスワード
   ▼かみちゃん さん:
こんばんは、さっそく教えて頂いたVBAコード

>>Option Explicit
>>Sub Macro2()
>>
>>  Dim MaxColumn As Integer, MaxColumnStart As Integer
>  Dim MaxRow As Long, RowNo As Long, ColumnNo As Integer
>>
>>
>>  '変形前の最終列を取得
>>  '表の途中に空白行、空白列がないことが前提
>>  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 = 2 To MaxColumn
>    If Cells(RowNo, ColumnNo).Value <> "" Then
>     If ColumnNo > 2 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, 2)
>     End If
>    Else
>     Exit For
>    End If
>   Next
>   RowNo = RowNo + 1
>  Loop
>  '列方向へ挿入した列全体を削除
>  Range(Columns(3), Columns(MaxColumn)).Delete Shift:=xlToLeft
>>
>>  '変形後の表全体の罫線処理(マクロの記録により記述)
>>  Range("A1").CurrentRegion.Select
>>  Selection.Borders(xlDiagonalDown).LineStyle = xlNone '※
>>  Selection.Borders(xlDiagonalUp).LineStyle = xlNone '※
>>  With Selection.Borders(xlEdgeLeft)
>>    .LineStyle = xlContinuous
>>    .Weight = xlThin '※
>>    .ColorIndex = xlAutomatic '※
>>  End With
>>  With Selection.Borders(xlEdgeTop)
>>    .LineStyle = xlContinuous
>>    .Weight = xlThin '※
>>    .ColorIndex = xlAutomatic '※
>>  End With
>>  With Selection.Borders(xlEdgeBottom)
>>    .LineStyle = xlContinuous
>>    .Weight = xlThin '※
>>    .ColorIndex = xlAutomatic '※
>>  End With
>>  With Selection.Borders(xlEdgeRight)
>>    .LineStyle = xlContinuous
>>    .Weight = xlThin '※
>>    .ColorIndex = xlAutomatic '※
>>  End With
>>  With Selection.Borders(xlInsideVertical)
>>    .LineStyle = xlContinuous
>>    .Weight = xlThin '※
>>    .ColorIndex = xlAutomatic '※
>>  End With
>>  With Selection.Borders(xlInsideHorizontal)
>>    .LineStyle = xlContinuous
>>    .Weight = xlThin '※
>>    .ColorIndex = xlAutomatic '※
>>  End With
>>  '拡張したタイトル行の修正
>>  Range(Cells(1, MaxColumnStart), Cells(1, MaxColumn)).Select
>>'  Range("C1:E1").Select
>>  Selection.Borders(xlDiagonalDown).LineStyle = xlNone '※
>>  Selection.Borders(xlDiagonalUp).LineStyle = xlNone '※
>>  With Selection.Borders(xlEdgeLeft) '※
>>    .LineStyle = xlContinuous '※
>>    .Weight = xlThin '※
>>    .ColorIndex = xlAutomatic '※
>>  End With '※
>>  With Selection.Borders(xlEdgeTop) '※
>>    .LineStyle = xlContinuous '※
>>    .Weight = xlThin '※
>>    .ColorIndex = xlAutomatic '※
>>  End With '※
>>  With Selection.Borders(xlEdgeBottom) '※
>>    .LineStyle = xlContinuous '※
>>    .Weight = xlThin '※
>>    .ColorIndex = xlAutomatic '※
>>  End With '※
>>  With Selection.Borders(xlEdgeRight) '※
>>    .LineStyle = xlContinuous '※
>>    .Weight = xlThin '※
>>    .ColorIndex = xlAutomatic '※
>>  End With '※
>>  Selection.Borders(xlInsideVertical).LineStyle = xlNone
>>  '拡張したタイトルをセル結合する
>>  Selection.MergeCells = True
>>  Range("A1").Select
>>
>>End Sub

で、前掲例題

┌─┬─┬───┐
│A │B │C   │
├─┼─┼───┤
│1 │あ│a   │
├─┼─┼───┤
│2 │い│   │
├─┼─┼───┤
│3 │う│b,c  │
├─┼─┼───┤
│4 │え│d   │
├─┼─┼───┤
│5 │お│e,f,g │
└─┴─┴───┘

を処理してみたのですが

ワークシートSheet1に変換された表は

┌─┬─┬─────────┐
│A │B │         │
├─┼─┼─────────┘
│1 │あ│
├─┼─┤
│1 │a │
├─┼─┤
│2 │い│
├─┼─┤
│3 │う│
├─┼─┤
│3 │b │
├─┼─┤
│3 │c │
├─┼─┤
│4 │え│
├─┼─┤
│4 │d │
├─┼─┤
│5 │お│
├─┼─┤
│5 │e │
├─┼─┤
│5 │f │
├─┼─┤
│5 │g │
└─┴─┘

のようになってしまい、私が望んでいた処理結果

┌─┬─┬───┐
│A │B │C   │
├─┼─┼───┤
│1 │あ│a   │
├─┼─┼───┤
│2 │い│   │
├─┼─┼───┤
│3 │う│b   │
├─┼─┼───┤
│3 │う│c   │
├─┼─┼───┤
│4 │え│d   │
├─┼─┼───┤
│5 │お│e   │
├─┼─┼───┤
│5 │お│f   │
├─┼─┼───┤
│5 │お│g   │
└─┴─┴───┘

のようにはなりませんでした。また変換処理表はワークシートSheet2に出力したいんです。たびたびですみませんが、いま一度この例題でVBAコードをチェックして頂けませんか?

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 質問

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