• ベストアンサー

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で 編集 - 形式を選択して貼り付け - 書式なしテキスト または、いったんメモ帳に貼り付けてから メモ帳上でもう一度コピーそして貼り付けとか で対処できませんか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excel VBA sort で困ってます。(初心者です)

    Excel VBA sort で困ってます。(初心者です) 行いたい事は、曜日別時間別にsortして印刷をするをやっていますがsortがうまくいきません。 sort範囲指定後、key1にRange(a1:f1) 列は月(a)~土(f) セルは時間が入っています(入っていないセルも存在します) sort後、ブレイクポイント指定して、シートを確認したが、月(a)の列のみsortされ、それ以降のsortができていません。願わくは、正しいロジック又は、どこがおかしいのか教えて頂けたら幸いです。宜しくお願い致します。

  • エクセルでのソートについて、教えて下さい

    お世話になります。 エクセルのセルに、・・・ 例えば、 5 3 1 9 2 4 6 12 7 2 1 10 とあります。 横方向に、4つの数字ですが、最後は、3つの数字の 合計となっています。 5+3+1=9 というように・・ このように、並んでいるものを、合計の小さい順番に ソートしたいのです。 ソートした結果として、・・・ 5 3 1 9 7 2 1 10 2 4 6 12 このように、合計数字が、小さい順番に、 ソートしたいのです。 さらに、その前の3つの数字も 同時に、合計数字にくっついて、ソートしてほしい のです。 こんなことできるのでしょうか?? 教えて下さい。

  • EXCELのVBAセル操作について

    こんばんは、エクセルのセルの操作(vba)についてお知恵をお貸しください。 シートBに配置してあるボタンをクリックすると、シートAの”A10”に飛ぶVBAを作りました。 ここで、問題になったのがシートAの5行目に行を挿入した時に シートBに配置してあるボタンをクリックすると、シートAの”A10”に飛ぶのですが A10の内容は行を追加した影響でA9の内容が表示されています。 手作業でA10をA11にすればいいのですが、 このシートAには、このようなモジュールがたくさん貼ってありA10より下の全て行を 手作業で修正するのはしんどいので何かいい案はありますでしょうか? Sub a10モジュール() Sheets("worksheeta").Select Range("A10").Select End Sub

  • エクセルのソートの繰り返し作業について

    こんにちは いつもお世話になっています。 エクセルでソートの繰り返し作業のショートカット、あるいはマクロを教えてください。 例えば、同一シート内のデータで、1-10行までを選択してソートします。 最優先される列はNo.1がC列でNo.2がA列です。 この条件のソートを別の複数行で複数回行うので「データ」-「並べ替え」等の手順をカットしたいのです。 2003でのショートカットのCtrl キーを押しながら Y キーを押すことでは対応していないようです。 2007ではクイック アクセス ツールバーの (繰り返し) も対応していないようです。 最初は手作業で、次からは該当行の選択後に同一条件でのソートができるマクロがあればいいのではないかとおもうのです。 2003と2007で使えるものをご紹介いただけると助かります。 よろしくお願いします。

  • Excelを2つ起動してセルを参照する方法

    ご質問させていただきます。 Excel2007を2つ起動して、他方のシートのセルを参照したいのです。 具体的に説明いたしますと、1つ目のExcel2007をExcel(1)と呼び、2つ目のExcel2007をExcel(2)と呼ぶことにします。Excel(2)のsheet1のA1セル~A48セルまでcalculateイベントでリアルタイムに変化する値が入っています。それらの値をExcel(1)のsheet2のB1セル~B48セルで参照したいのです。 できるのでしょうか? どなたか教えていただけないでしょうか? よろしくお願いいたします。 もしVBAを使わなくてもできるようでしたら、そちらの方法も教えてください。 よろしくお願いいたします。

  • Excelで参照のセル値の変化でVBAを実行する

    Excelで別シートの値を参照しているセル値の変化でVBA実行イベントを起こすにはどういう方法があるのでしょうか。 例えばSheet1のA1は、Sheet2のA1の最初の4文字を参照にしているとします。この場合、Sheet1のA1の中は『=LEFT(Sheet2!A1,4)』です。 これでSheet1のA1の参照結果が変化すればVBAが実行される方法のアドバイスを頂きたいです。 調べて見たらSheet3を作業シートにして、Sheet3の方でSheet1のA1を参照にしてCalculate(シートが再計算された時に発生)イベントで実行するという一つの手を見つけましたが、他にもスマートな良い方法があるのか気になったので質問させてもらいました。よろしくお願いします。

  • エクセルVBA 開始セルに戻る方法

    エクセル2003にて VBA記述の方法で、”実行時に選択されていたシートのセルに戻る”というのはどう記述すればよいのでしょうか??? 現在使用しているVBAは人から教えてもらったもので”アクティブシートから他のシートの情報を検索し、コピーする”というものですが追加で”元のシートに返って情報を貼り付ける”という機能を追加したいです。 わかるかた教えてください。(初心者ですみません)

  • エクセルをシートの保護をするとエラーが出る。

    いつもお世話になります。 先日より VBAの記述を教えて頂きエクセルワークシートを作成しましたが (指定の色に色分けするVBA記述でした。)作業をしていると関数を入れているセルを消してしまう問題が発生しました。 その場合 シートの保護をして必要以外のセルを操作出来すれば良いと思い実施してみました。 しかし、VBAを走らすと ”実行エラー’1004’:InteriorクラスのColorIndexプロパティを設定出来ません”とメッセージが出てしまいます。何か良い手だてはありませんか お忙しところ申し訳ありませんが よろしくお願い致します。

  • エクセルでのソート

    こんにちは いつもお世話になっています エクセルのソートについて教えてください。 以下のようなデータがA列にあります。 Sheet1 Aグループ 愛知県 青森県 秋田県 Bグループ 石川県 茨城県 岩手県 愛媛県 Cグループ 大分県 大阪府 岡山県 沖縄県 香川県 鹿児島県 B列以降にデータがあり、複数グループが複数シートに渡ってあります。 ソート手順は例えば、Aグループ、愛知から秋田を範囲選択しソート、次にB、石川から愛媛を範囲選択しソート、以下同じ、Sheet1が済んだらSheet2へ、という作業手順です。 グループごとの件数は異なるが、ソートする優先キー(列)は第一がB列、第二がC列で同じです。 ソート処理自体はマクロの自動記録でやっていますが、グループごとに範囲選択しマクロを使う手順です。 ここで質問ですが、複数シートに複数グループがあります。各シートの各グループの件数は不一致です。これらのグループをなるべく簡単に上記のような同一基準でソートするにはどうすればいいでしょうか。

  • エクセル2007です。セルの塗りつぶしを自動に実行するVBAについて、

    エクセル2007です。セルの塗りつぶしを自動に実行するVBAについて教えてください。システム日付でVBAを使用したいのですが横軸に日付(2010/1/1~2015/12/31)、縦軸に時間(0~24まで)があるシートです。日付と時間がマッチしたところのセルを緑色に塗りつぶしたいと思います(スケジュール表を作成中です)。VBA初心者ですが、記述等教えていただきたいと思います。よろしくお願いします。

専門家に質問してみよう