- ベストアンサー
Excelでセルの高さを保ったままソートできないか?
Excelで作ったシートがあり、行方向のセルの高さが記述量に応じて異なっています。これをソートしたいのですが、セルの内容は入れ替わってもセルの設定した高さは変化しないので最後に手作業でいつも修正しています。ソート時にセルの高さも一緒に動くやり方は無いでしょうか?(VBAで出来ないでしょうか?)
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
前提条件 見出し行: 1行目3列(A1~C1) データ行: 2行目以降 キーの列: A列 とした場合、 未使用列(今回は最終列C列の隣、D列使用)に各行の高さを入れておき ソート後、その値で高さを再設定してもいいですね。 '------------------------------------------ Sub Test() Dim R As Long Dim LastRow As Long Dim myRange As Range Application.ScreenUpdating = False LastRow = Cells(Rows.Count, "A").End(xlUp).Row Range("D:D").ClearContents For R = 2 To LastRow Cells(R, "D").Value = Rows(R).RowHeight Next R Set myRange = Range("A1", Cells(LastRow, "D")) myRange.Sort _ Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ SortMethod:=xlPinYin For R = 2 To LastRow Rows(R).RowHeight = Cells(R, "D").Value Next R Range("D:D").ClearContents Application.ScreenUpdating = True End Sub '--------------------------------------------
その他の回答 (3)
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
No1です すみません 投稿する場所を間違えました m(_ _)m あとから行の高さを自動調整で対処できないかなぁ
- xls88
- ベストアンサー率56% (669/1189)
昇順で並べ替えるサンプルマクロです。 使えるかどうか、ダミーのシートでテストしてみてください。 Sub test1() Dim i As Long Dim j As Long For i = 1 To Range("A1:A10").Count For j = 1 To Range("A1:A10").Count - 1 If Range("A1:A10").Item(j).Value > Range("A1:A10").Item(j + 1).Value Then Range("A1:A10").Item(j + 1).EntireRow.Cut Range("A1:A10").Item(j).EntireRow.Insert Shift:=xlDown End If Next j Next i End Sub
お礼
早速の回答有難うございました。
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
Excelでブラウザでプレビューしたものをコピーして貼り付けるとか PowerPointで 編集 - 形式を選択して貼り付け - 書式なしテキスト または、いったんメモ帳に貼り付けてから メモ帳上でもう一度コピーそして貼り付けとか で対処できませんか?
お礼
で、出来ました!!有難うございます。VBA初心者の私としてはrangeオブジェクトを使ったこのやり方はとても難しく、自分では書くことが出来ません。 コメントに書かれていたセルの高さを記入し、後でその値を元にセルの高さを調整する方法は良いですね。もう何ヶ月も考えて、よく分からなかったので投げ出す寸前でした。本当に感謝です。明日から仕事がバリバリ進みそうです。