• 締切済み

エクセルで離れた行同士をソートする方法

タイトルでは分かりにくいかもしれませんが。 0 10 0 5 1 9 2 4 2 8 4 3 3 7 4 6 こういった表になっているとき。 0 10 0 5 1 9 2 8 2 4 3 7 4 6 4 3 のようにA列とC列を連動させてソートする方法があれば教えてください。マクロになってしまうのならマクロでも結構です。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

質問の内容の特徴を捉えにくい質問表現ですね。 質問において、私は常々、例は絶対必要と、OKWAVE回答で力説してます。 しかし例だけではわかりにくい場合も多い。例は挙げかたによっては 特徴を捨て去る場合もある。本件例などでは、0,1,2・・など1つしかない、続いた例ですが、実際はどうなのか。 重複ありやAB列なしCD列ありなどが例では現れていません。 プログラムを少し経験すると、その条件でプログラムロジックが大きく変わることが経験できます。 ーー 本題は (1)A列+B列ででソート (2)C列+D列でソート (3)C,D列はA,B列に釣り合った場所(行)に持ってくる。 ように見えるが、それで正しいですか。(3)が曲者。 それとCD列ありは、必ずAB列ありよりデータ列が少ないのでしょうか。 0 10       1 3 0 8  1 2 2 4 などないのでしょうか。 ーーー VBA向きの問題だと思いますね。 Sub test02() d = Range("A65536").End(xlUp).Row '--A-D列をE-H列にコピー(ソートのため) Range("a1:D" & d).Copy Range("E1") '--ソート Range("E1:F" & d).Sort key1:=Range("E1"), key2:=Range("F1") Range("G1:H" & d).Sort key1:=Range("G1"), key2:=Range("H1") '--E-F列をI-J列にコピー Range("E1:F" & d).Copy Range("I1") '--G,H列をK、L列に再配置 d1 = Range("G65536").End(xlUp).Row For i = 1 To d1 r = Range("I1:I" & d).Find(what:=Cells(i, "G")).Row Cells(r, "K") = Cells(i, "G") Cells(r, "L") = Cells(i, "H") Next i End Sub 質問例で、実行結果はI、J,K,L列で 0 10 0 5 1 9 2 8 2 4 3 7 4 6 4 3 ただ上記VBAコードのFindは、必ず見つかるものとの前提で、 1つしかないという仮定で、手抜きしてます。

noname#79209
noname#79209
回答No.2

これを「ソートに関する課題」と認識しているとハマってしまうでしょう。 むしろ、データベースでいうクエリに近いですね。 データそのものを動かすのではなく、「適合するデータを拾ってくる」と考えるべきです。 そこで、B列とC列に新たに2列挿入し、元のC,D列をE,F列とします。 新たなC列には、 =IF(ISNA(VLOOKUP(A1,$E$1:$F$3,1,FALSE)),"",VLOOKUP(A1,$E$1:$F$3,1,FALSE)) D列には =IF(C1="","",VLOOKUP(A1,$E$1:$F$3,2,FALSE)) でよろしいかと....

  • qno
  • ベストアンサー率44% (4/9)
回答No.1

こんな方法ではダメでしょうか? 空いている列(E列など)に、VLOOKUP関数で、 =VLOOKUP(A1,$C$1:$C$5,1,FALSE) します。するとA列とC列の同じ数字が同じ行に並びます。 C列に該当数字がないとエラーが返りますが、オートフィルターでその行だけ表示させて削除してしまえば早いと思います。

関連するQ&A

  • 2行連結したエクセル表をソートしたい

    A列1から2行、次にA列3から4行、最終はA列9から10行までを連結したエクセル表をソートする方法がありましたなら教えて下さい。

  • エクセルでのソート

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

  • エクセル ボタンでソートしたい

    教えてください エクセル表で各列でソートしたい 列毎のマクロを書くのは大変なので、ボタンを表示しておき、その列のセルをクリックしてactive にしてから、ボタンをクリックしたらソートできるようにしたい。 Dim retuban retuban = XXXXXX strkey1 = retuban Selection.Sort Key1:=Cells(3, strkey1), のようにやればいいと思うのですが XXXXXの列名(AAなど)を取得するマクロがうまくいきません よろしくお願いします。

  • エクセル表で異なった分類でソートする方法

     A列に分類番号のA・B・Cを打ち、横にデータを記入していく。横列のC又はD(縦列)にア・イ・ウの頭文字をつけてデータ(人名や語句)を打っていく。このようにして作った表を、(1)ABCをソートして並べ替える(Aグループ、Bグループの順に並ぶ。次に(2)Aグループのなかを、アイウ順に並べ替えたい。そのような操作が出来る方法を教えてください。  私が試みたら、C列だけがソートされて、横のデータが付いていかないのです。空欄があるせいでしょうか。それとも?ソートは、C欄全体を選択し、「降順」をクリックしています、表全体(AからE,Fまで選択したら、どの指標で(AかCか)分からないと思って。  試行錯誤で使っています。どうぞ知恵を貸してください。

  • エクセルで行をソートする方法

    はじめまして、PCにあまり詳しくないもので質問させていただきます。エクセルで列をオートフィルターを使ってソートするように行をソートする方法はあるのでしょうか??困っています。どなたか分かる方がいました是非お教えください。 宜しくお願いいたします。

  • エクセルのソートのマクロ

    エクセルでのソートのマクロを教えてください。  範囲選択は手動でその都度変更します。優先列、昇順は変更ありません。 例えば、AからE列までデータがあり、第一優先列をD列、第二優先列をA列として、それぞれ昇順でソートします。 範囲はその都度手動で複数行を全列選択します。 つまり、適宜、複数行を選択してからこのマクロを実行すれば常に先の形式でソートできるようにしたいです。  わかりにくい記述で恐縮ですがよろしくお願いします。

  • マクロでソートをかけるときにタイトル行を残したいのですが

    Excel2002での作業です。 ある表があり、名前、数、でソートボタンをマクロで作りたいのです。 名前   数 ---------------- アライ  2 イド   5 スズキ  1 簡単にいうとこんな感じです。 ただ、最初の行をタイトル行として、ソートにはいれたくないのです。 しかも、最初の行は、ウィンドウズ枠固定で、固定したいです。 教えてください。 (以前に、このマクロボタンを作ったのですが、だれかが壊してしまい、ソートするとタイトル行がどこかに混ざってしまうようになってしまいました。この直し方でもいいので教えていただきたいです。)

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

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

  • 多次元配列のソート

    過去に同様の質問があったのですが、未回答でしたので質問させていただきます。 多次元配列のうちの一つの列の値でソートし、その他の列にも結果を連動させたいのですが方法が分かりません。 たとえば、a[n][m]という配列で a[0][0]=C a[0][1]=う         a[0][0]=A a[0][1]=あ a[1][0]=A a[1][1]=あ   →    a[1][0]=B a[1][1]=い a[2][0]=B a[2][1]=い         a[2][0]=C a[2][1]=う というように、n列でソートしm列でもその結果で並べ替えたいです。 恐らくComparatorインタフェースを使用すると可能かと思うのですが、方法を教えて頂けないでしょうか。

    • ベストアンサー
    • Java
  • エクセル2002でのソートについて

    A B C 1 A1 B1 C1 2 __ B2 C2 3 A5 B5 C5 4 __ B4 C4 5 A3 B3 C3 6 __ B6 C6    ↓ソート A B C 1 A1 B1 C1 2 __ B2 C2 3 A3 B3 C3 4 __ B4 C4 5 A5 B5 C5 6 __ B6 C6 (1)A列をキーに (2)1と2行,3と4行,5と6行を一纏めに ソートする方法はありますでしょうか?

専門家に質問してみよう