アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルでの 行の並び替えの方法で質問があります

多数行のデータの 任意の行同士の並び替え(例えば150行目と450行目を入れ替える)に

ついてですが、今私は、そのような場合、それぞれ 150行目と450行目のデータをそれぞれ

コピーし 挿入したあと 古いデータを削除するという方法で行っています。

これで 入れ替えはできるのですが、入れ替えるデータがたくさんあるときは

時間がかかって困っています。

ほかに もう少し簡単に行の入れ替えを行う方法はあるのでしょうか?あれば

是非教えてください。

初心者なので ごく基本的なご質問で恐縮ですが

宜しくお願い致します 

A 回答 (6件)

#1です。



7)は、「並べ替え」ボタンのことです。リボン(メニュー)から選んでも可。
    • good
    • 0
この回答へのお礼

私の基本的な質問に再度ご回答くださりありがとうございます

なるほど A→Z……並べ替えですよね

よく考えればわかることでした

番号を入れ替えて 並べ替えをおこなったら 簡単に

できました。コピーするより全然簡単です

感謝いたします

ただ MackyNo1様の 並べ替えの方法もドラッグで

簡単にできたので、NO1様とどちら様をベストアンサーに

させていただくか ちょっと迷っています

ごめんなさい

質問に 再度答えてくださって大変感謝しています

ありがとう ございました

お礼日時:2013/03/23 17:05

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
    • good
    • 0

こんばんは!



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
    • good
    • 0
この回答へのお礼

ご回答くださりありがとうございます

初心者のせいか、ちょっと うまくできませんでした

でも教えていただいて 感謝いたします

また 何かわからないことがあったら ご質問させていただくことも

あるかとおもいますが その際はよろしくお願いいたします

お礼日時:2013/03/23 17:12

行や列の並べ替えは以下のようなマウスおよびキー操作をするのが基本です。



すなわち、移動したい範囲を選択し、周囲にカーソルを置いて、Shiftキーを押しながら移動先にドラッグし、(挿入位置に灰色のマーカーが出るのを参考にして)移動先にドロップします。

ちなみに、Shiftキーを押さないでドラッグした場合は、単純に上書き「移動」になり(数式などは元のセルと全く同じ数式になります)、Ctrlキーを押してドラッグすれば「コピー」です(相対参照の数式は移動先で変更されます)。
    • good
    • 0
この回答へのお礼

分かり易いご回答ありがとうございます

並べ替えはNO1様のご回答で できたのですが

MackyNo1様の ドラッグでできる方法が便利なので

とても参考になりました

また 上書きやコピーなどのアドバイスもとても参考に

なりました

ただ NO1様が 私の質問に何度もご回答をくださったので

ベストアンサーを どちら様にするか ちょっと迷っています

申し訳ありません

アドバイス本当に参考になりました

ありがとうございました

お礼日時:2013/03/23 16:51

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

    • good
    • 0

ソート(並べ替え)用の列をひとつ設けるのはいかが?



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

8)不要なら列A削除
    • good
    • 0
この回答へのお礼

さっそくのご回答ありがとうございます

教えていただいた手順に沿って1)から6)まで

進めていったのですが 7)でつまずきました

7)A→Zキー押下。の意味が分かりませんでした

すみません。どのようにすればよいのでしょうか?

お礼日時:2013/03/20 21:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!