• ベストアンサー

エクセルで2列以上のものを同時に並び替えするには

エクセルで下記のようなデーターがあるとします。 1 A  G     B  H 2 C  I  ○   D  J 3 E  K   F  L このようにひとつの項目に2行づつあるものに対して、最後に○をつけたものを先頭に2行そのまま一気に並び替えるにはどのようにすればよろしいでしょうか?要するに 2 C  I  ○   D  J 1 A  G     B  H 3 E  K   F  L このようにしたいです。 よろしくお願いいたします。

  • arabu
  • お礼率25% (42/165)

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.7

こんばんは。 一応、現在は、2列ごとの並べ替えをするものですが、AA1から右をテンポリーセルとしていますから、もし、そこに何かあるようでしたら、どこか適当な場所にしてください。 '標準モジュール推奨 Sub DoubleRowsSort() '二行を1行として並べ替えをするマクロ   Dim rng As Range   Dim mRow As Integer   Dim mCol As Integer   Dim Ar() As Variant   Dim Ar2() As Variant   Dim c As Variant   Dim r As Variant   Dim i As Integer   Dim k As Integer     Set rng = Range("A1").CurrentRegion   mRow = rng.Rows.Count   mCol = rng.Columns.Count   ReDim Ar(1 To mRow / 2, 1 To mCol * 2)   For Each c In Range("A1").CurrentRegion    i = i + 1    Ar(Int((i - 1) / (mCol * 2)) + 1, (i - 1) Mod mCol * 2 + 1) = c.Value   Next c   Application.ScreenUpdating = False  'テンポラリセル領域   With Range("AA1").Resize(mRow / 2, mCol * 2)    .Value = Ar()        '並べ替え 4列目(D)    .Sort Key1:=.Range("D1"), Order1:=xlAscending, Header:=xlNo, _    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom    ReDim Ar2(1 To mRow, 1 To mCol)    For Each r In .Cells      k = k + 1      Ar2(Int((k - 1) / mCol) + 1, (k - 1) Mod mCol + 1) = r.Value    Next    .ClearContents   End With   Application.ScreenUpdating = True     rng.Value = Ar2()   Set rng = Nothing End Sub

arabu
質問者

お礼

解答いただいた方ありがとうございます。

その他の回答 (6)

  • cockerel
  • ベストアンサー率46% (253/548)
回答No.6

No4です。 E1に=A1、E2に=A1、をそれぞれ入力し、E1およびE2を選択してフィルハンドルをE6までドラッグします。さらに横にH6までドラッグします。コピー&値ペーストをします(安全のため)。アクティブ領域(A1:H6)を選択してH降順、E昇順でソートし、EからHを削除します。 ステップは多くなりますが、元のデータを変更しないで済みます。 (あわてて取り繕ったぼろ隠しのような答えで少々気恥ずかしい気もしますが、何かのご参考に)。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.5

データ→並び替え→第1優先をC列→第2優先をB列で如何でしょうか。

  • cockerel
  • ベストアンサー率46% (253/548)
回答No.4

No2です。 もう一度質問文を読み直しましたら完全に外していました。 無視してください。申し訳ありませんでした。 正しい妙案が浮かんだら書き込みます。

noname#204879
noname#204879
回答No.3

その程度のことなら、「一気」でなく“二気”で可能かと、 1.当該2行を選択して、右クリックから[切り取り] 2.1行目を選択して、右クリックから[切り取ったセ   ルの挿入]

  • cockerel
  • ベストアンサー率46% (253/548)
回答No.2

A1からD6までご質問のデータが入っているとすると、データ>並べ替えで3つまで指定できるのでD列、C列、B列の順でソーティングを設定すればよいように感じられますが、結果として示されている2行目がどのようなコンセプトでその位置に来ているのかわかりません。それを除けば上記のとおりの方法でソーティングできるはずです(おまけ:並べ替えの要素が4以上になる場合には連番を使い、複数段階のソーティングを行います)。

  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.1

例で示したものはどちらかというと表形式的なものです。ですのでその状態で見るしかないもの。データベース的な処理をしたいのなら、どうにかして修正するしかないでしょう。 こんな感じで。 10 A  G   11 B  H 20 C  I  ○ 21 D  J  ○ 30 E  K 31 F  L 修正は量が多いのならマクロを組んでやってしまえば手っ取り早いでしょう。それが難しいのなら最初から入力しなおした方が後々のためにもお勧めかもしれません。

関連するQ&A

  • エクセルのデータ並び替え

    列(A)に1000個あるデータを、4列X250行に自動的に並び替える方法はありますか? つまり A   A B C D B   E F G H C ⇒ I J K L D   M N O P E   ・ ・ ・ ・ ・ ・ ・ と、並べかえたいのですが、いい方法はありませんでしょうか?

  • エクセルデータの並び替え

    A列に 1 2 3 4 5 6 7 ・・・・・ B列に a b c d e f g h i j k l ・・・・ と文字列があります。 これを C列に 5つずつデータをセットにして並べたいのです。 A列    B列           C列 1     a      1 a   2 b  3 c  4 d  5 e 2     b      6 f   7 g  8 h  9 i  10 j 3     c      11 k  12 l  13 m  14 n  15 o 4     d      16 p   17 q  18 r  19 s  20 t 5     e      以下同じように続く 6     f 7     g 8     h 9     i 10     j 11     k 実際のC列のデータは トマト tomato  ネコ cat   机 desk  いす chair  かばん  bag  のようにしたいのです。 関数の扱いがわからずに苦戦しています。どうぞ、よろしくお願いします。

  • Excelで飛び飛びのセル(列)を参照したいのですが…その2

     ある「sheet1」で、G1="A",H1="B",I1="C",J1="D",K1="E",L1="F",M1="G",N1="H",O1="I",P1="J",Q1="K",・・というように文字が入力されているとすると、5列飛びの値A,F,K・・・(G1,L1,Q1・・・)が欲しいのです。そして、その値が「sheet2」に、C5=A,D5=F,E5=K,F5=P・・・となるようにしたいのです。ただ数値が5ずつ増加するのではなく、そのセルに入力されている文字列を参照したいのです。  それをまた、「sheet1」の、G2="A",H2="B",I2="C",J2="D"・・・の値でも同じ事をしたいのですが・・・。  よろしくお願いします。

  • エクセル マクロでセルを自動移動

    例1のようになっているエクセル表があります。 データは右方向、下方向へ増えます。 Cの列以降は4つ単位でしかデータは増えません。 それを例2の表のように列A,Bのデータはそのままに Cの列以降の4つのセルを区切りに下の行に移動して、 空白の列まで言ったらA2の行以降を最後の行まで繰り返しするという マクロを書くことは可能でしょうか。 出来ましたらそのマクロを教えてください。 例1 A1 B1 C1 D1 E1 F1 G1 H1 I1 J1 K1 L1 M1 N1 A2 B2 C2 D2 E2 F2 G2 H2 I2 J2 A3 B3 C3 D3 E3 F3 G3 H3 I3 J3 K3 L3 M3 N3 例2 A1 B1 C1 D1 E1 F1 A1 B1 G1 H1 I1 J1 A1 B1 K1 L1 M1 N1 A2 B2 C2 D2 E2 F2 A2 B2 G2 H2 I2 J2 A3 B3 C3 D3 E3 F3 A3 B3 G3 H3 I3 J3 A3 B3 K3 L3 M3 N3

  • エクセル 3列おきに列を挿入したい

    いつもお世話になります。 1行目に営業所コードがあり、そのコードを3列おきに表示するにはどうしたらいいでしょうか。   A  B  C  D  E  F  G  H  I  J   2   3   4   5   7   8  11  12  14  15              ↓   A  B  C  D  E  F  G  H  I  J   2          3         4         5 営業所コードは2~150の数字で、100ほどの営業所コードが存在します。 よろしくお願いします。

  • テキストをExcel2000に貼り付け

    .txtを参照してファイル内容を、マクロで Excel2000に貼り付けたいと考えています。 先頭の1行は決まっていて2行目からが 対象になります(コロン区切りのファイルです) コロンは削除してA~Jまでの文字を ExcelのA~Jのセルに貼り付ける 例).txtの記述 START :A :B :C :D :E :F :G :H :I :J :A :B :C :D :E :F :G :H :I :J :A :B :C :D :E :F :G :H :I :J ExcelのA1セルから最大20000行まで対応したいです。 どうかご教授願います。

  • EXCELの表で縦横の入れ替え方法

    EXCELの表で 縦軸と横軸を入れ替える方法ってありますか? つまり A B C D E F G H I J K L っていう表を A E I B F J C G K D H L にしたいのです。

  • エクセルの使い方についてお教えください。

    エクセルの使い方についてお教えください。 例えば、 a | b | f c | g | j d | h | k | m e | i | l | n | o | のように、右肩下がりになっている列を、 a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | のように一列にまとめる方法は無いでしょうか? 何卒よろしくお願いいたします。

  • 巨大なCSVの加工(指定列のみの抽出)について

    巨大なCSVの加工(指定列のみの抽出)について 下記のような構成のCSVファイルがあります。 "ID","a","b","c","d","e","f","g","h","i","j","k","l","m" "0001","a","b","c","d","e","f","g","h","i","j","k","l","m" "0003","a","b","c","d","e","f","g","h","i","j","k","l","m" "0004","a","b","c","d","e","f","g","h","i","j","k","l","m" ・ ・ ・ 例えば、 ここから"ID"列と"c"列と"f"列のみ抽出して新たなCSVファイルで保存。 という処理を行いたいのですが、行数が5000万行近くあり、ファイルサイズが80GB程あるので エクセルはおろかアクセスでも開くことができません。 テキストエディタの秀丸64bit版なら開くことができますが、指定列の抽出方法が分かりません。 秀丸のマクロでもVBSでも良く、また膨大な待ち時間がかかっても構わないので実現する方法について お知恵をお貸しください。

  • 2行のセルの入れ替え。

     初めまして、よろしくお願いします。  セルに A B C D E F G H I J K L 1 a b c d e f 2 g h i j k l 3 m n o p q r 4 s t u v w x 5 " ・ " ・ " ・ " 100 "  という表があります。これを A B C D E F G H I J K L 1 a b c d e f g h i j k l 2 m n o p q r s t u v w x 3 " 4 " 5 " ・ " ・ " ・ " 100 "  という風に、偶数行のデーターを奇数行の後ろにつけるようにしたいと思います。無理ならば奇数行だけのデーター、偶数行だけのデーターとなるように、何かよい方法を教えて頂きたく、よろしくお願いします。

専門家に質問してみよう