• ベストアンサー

エクセル 行の並び替え

エクセルでの 行の並び替えの方法で質問があります 多数行のデータの 任意の行同士の並び替え(例えば150行目と450行目を入れ替える)に ついてですが、今私は、そのような場合、それぞれ 150行目と450行目のデータをそれぞれ コピーし 挿入したあと 古いデータを削除するという方法で行っています。 これで 入れ替えはできるのですが、入れ替えるデータがたくさんあるときは 時間がかかって困っています。 ほかに もう少し簡単に行の入れ替えを行う方法はあるのでしょうか?あれば 是非教えてください。 初心者なので ごく基本的なご質問で恐縮ですが 宜しくお願い致します 

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

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.4

#1です。 7)は、「並べ替え」ボタンのことです。リボン(メニュー)から選んでも可。

noa-t
質問者

お礼

私の基本的な質問に再度ご回答くださりありがとうございます なるほど A→Z……並べ替えですよね よく考えればわかることでした 番号を入れ替えて 並べ替えをおこなったら 簡単に できました。コピーするより全然簡単です 感謝いたします ただ MackyNo1様の 並べ替えの方法もドラッグで 簡単にできたので、NO1様とどちら様をベストアンサーに させていただくか ちょっと迷っています ごめんなさい 質問に 再度答えてくださって大変感謝しています ありがとう ございました

その他の回答 (5)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.6

No.5です! たびたびごめんなさい。 前回のコードで不具合がありました。 ↓のコードに訂正してください。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'この行から Dim i As Long, j As Long, k As Long, c As Range, wS As Worksheet Set wS = Worksheets("Sheet2") If Target.Column = 1 Then '←A列限定 Cancel = True i = Cells(Rows.Count, 1).End(xlUp).Row Set c = Cells(1, 1).Resize(i, 1).Find(what:="", LookIn:=xlValues, lookat:=xlWhole) If c Is Nothing Then Target.EntireRow.Cut wS.Cells(1, 1) Else j = c.Row k = Target.Row Target.EntireRow.Copy c wS.Rows(1).Cut Target MsgBox j & "行目と" & k & "行目を入れ替えました" End If End If End Sub 'この行まで ダブルクリックはA列に限定するのを忘れていました。 どうも失礼しました。m(_ _)m

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.5

こんばんは! VBAでの一例です。 >例えば150行目と450行目を入れ替える というコトですので、 A列をダブルクリックすると最初にダブルクリックした行と2番目にダブルクリックした行を入れ替えるようにしてみました。 尚、作業用としてSheet2を使用していますので、Sheet2は使っていないSheetにしてください。 そして、A列は1行目からデータの最終行まで空白セルがないという前提です。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてA列をダブルクリックしてみてください。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'この行から Dim i As Long, j As Long, k As Long, c As Range, wS As Worksheet Set wS = Worksheets("Sheet2") Cancel = True i = Cells(Rows.Count, 1).End(xlUp).Row Set c = Cells(1, 1).Resize(i, 1).Find(what:="", LookIn:=xlValues, lookat:=xlWhole) If c Is Nothing Then Target.EntireRow.Cut wS.Cells(1, 1) Else j = c.Row k = Target.Row Target.EntireRow.Copy c wS.Rows(1).Cut Target MsgBox j & "行目と" & k & "行目を入れ替えました" End If End Sub 'この行まで ※ 最初A列セルをダブルクリックするとその行は空白になりますが、Sheet2の1行目にそのまま貼り付けています。 ※ 2番目にダブルクリックする行がかなり離れていて、画面スクロールが大変の場合は 名前ボックス(画面左上のセル番地が表示されているところ)に直接 A400 のように入力してEnterを押下! これでそのセルが選択されますので、そこでダブルクリックしてみてください。m(_ _)m

noa-t
質問者

お礼

ご回答くださりありがとうございます 初心者のせいか、ちょっと うまくできませんでした でも教えていただいて 感謝いたします また 何かわからないことがあったら ご質問させていただくことも あるかとおもいますが その際はよろしくお願いいたします

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

行や列の並べ替えは以下のようなマウスおよびキー操作をするのが基本です。 すなわち、移動したい範囲を選択し、周囲にカーソルを置いて、Shiftキーを押しながら移動先にドラッグし、(挿入位置に灰色のマーカーが出るのを参考にして)移動先にドロップします。 ちなみに、Shiftキーを押さないでドラッグした場合は、単純に上書き「移動」になり(数式などは元のセルと全く同じ数式になります)、Ctrlキーを押してドラッグすれば「コピー」です(相対参照の数式は移動先で変更されます)。

noa-t
質問者

お礼

分かり易いご回答ありがとうございます 並べ替えはNO1様のご回答で できたのですが MackyNo1様の ドラッグでできる方法が便利なので とても参考になりました また 上書きやコピーなどのアドバイスもとても参考に なりました ただ NO1様が 私の質問に何度もご回答をくださったので ベストアンサーを どちら様にするか ちょっと迷っています 申し訳ありません アドバイス本当に参考になりました ありがとうございました

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.2

#1の応用ですが、不要な行の列Aの値を消去してソートすれば、削除対象行が一塊になります。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

ソート(並べ替え)用の列をひとつ設けるのはいかが? 仮に列Aを用いるとして。列Bが、必要な行を網羅する値があるとします。 1)セルA1に値[1]を入力。 2)選択しているセルを囲む太線(ここではセルA1を囲む太枠)の右下隅が■になってるので   マウスカーソル乗せると黒い+になるので、ダブルクリック。 3)上記操作で、必要行まで連番が埋まるはず。※Ctrl+↓で確認すること。 4)セルA150(値[150]のはず)を450に書き換える 5)セルA450(値[450]のはず)を150に書き換える 6)セルA1の左上何もないところをクリックして、シート内を全選択 7)A→Zキー押下。 8)不要なら列A削除

noa-t
質問者

お礼

さっそくのご回答ありがとうございます 教えていただいた手順に沿って1)から6)まで 進めていったのですが 7)でつまずきました 7)A→Zキー押下。の意味が分かりませんでした すみません。どのようにすればよいのでしょうか?

関連するQ&A