• ベストアンサー

Excelでセルの高さを保ったままソートできないか?

Excelで作ったシートがあり、行方向のセルの高さが記述量に応じて異なっています。これをソートしたいのですが、セルの内容は入れ替わってもセルの設定した高さは変化しないので最後に手作業でいつも修正しています。ソート時にセルの高さも一緒に動くやり方は無いでしょうか?(VBAで出来ないでしょうか?)

質問者が選んだベストアンサー

  • ベストアンサー
  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.3

前提条件 見出し行: 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 '--------------------------------------------  

mucho
質問者

お礼

で、出来ました!!有難うございます。VBA初心者の私としてはrangeオブジェクトを使ったこのやり方はとても難しく、自分では書くことが出来ません。 コメントに書かれていたセルの高さを記入し、後でその値を元にセルの高さを調整する方法は良いですね。もう何ヶ月も考えて、よく分からなかったので投げ出す寸前でした。本当に感謝です。明日から仕事がバリバリ進みそうです。

その他の回答 (3)

回答No.4

No1です すみません 投稿する場所を間違えました m(_ _)m あとから行の高さを自動調整で対処できないかなぁ

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.2

昇順で並べ替えるサンプルマクロです。 使えるかどうか、ダミーのシートでテストしてみてください。 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

mucho
質問者

お礼

早速の回答有難うございました。

回答No.1

Excelでブラウザでプレビューしたものをコピーして貼り付けるとか PowerPointで 編集 - 形式を選択して貼り付け - 書式なしテキスト または、いったんメモ帳に貼り付けてから メモ帳上でもう一度コピーそして貼り付けとか で対処できませんか?

専門家に質問してみよう