- ベストアンサー
EXCELで2行データの並べ替えは可能か?
EXCELの並べ替えについての質問です。 例えば社員のデータで1人目が… 1行目に、所属、名前、入社日、生年月日、住所… 2行目に、基本給、管理職手当、職務手当、通勤手当… 2人目が3行目、4行目、3人目が5行目、6行目… といった具合に社員の1人分のデータが2行にまたがっていた場合、例えば、生年月日順に並べ替えをし、うまく1人分2行くっ付いた状態で並べ替えすることはできるでしょうか? 印刷レイアウト上、どうしても2行で1データとするケースがあります。 よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは 勿論VBAでもできますが、、、 何処か空いてる列(作業セルとして)に数式を用意して、 そちらの列を基準にソートするのではどうですか? 例えば =OFFSET(D1,MOD(ROW(),2)-1,0) もしも、2行めから始まるなら =IF(MOD(ROW(),2),D1,D2) などなど。 現在の並びに戻す必要があるなら、事前に =INT((ROW()+1)/2) などでキーを作っておくのもよいでしょう。 いずれも、 空いてる列の1行め(データの先頭行)に数式を入力して、 (数式を)下にコピー。 ↓ 数式の範囲をコピー状態にして、 そのまま形式を選択して貼り付け(値貼り付け)。 ↓ 表全体を選択してからキーを指定して並べ替え。 という手順です。 頻繁に並べ替えをするなら作業列を残して(非表示にして)おくのも有り、 データが増えるのに備えて数式を保存しておくのも有り。 こんな感じでどうでしょう
その他の回答 (2)
- Masa2072
- ベストアンサー率51% (94/182)
例えばD列が 1970/1/1,1000,1982/2/1,500,1980/3/1,2000 と順にデータがあった場合RANK関数を使うと 4,2,6,1,5,3 という順番になる、IF関数で1行目なら10倍し、2行目なら前行の値に1加算とすると 40,41,60,61,50,51 となる、これをソートすると要求通りになるではないかと思います。 データがA1から始まっており生年月日がD列とした場合、表の右のセルに =IF(MOD(ROW(A1),2)=1,RANK(D1,D:D,1)*10,OFFSET(A1,-1,0)+1) と入力し下にオートフィルし、式を入力した列をキーにして並び替えを行う。 実際のレイアウトやキーになる項目のデータ種によって方法は変わってくるので、実際にはマクロで行うのが良いように思います。
お礼
回答をありがとうございました。 ひとつ頭を捻ると、いろいろと方法論が出てくるものなのですね。 自分の頭の固さが痛感させられました。
- dodemoii
- ベストアンサー率59% (769/1282)
こんにちは マクロなどで補完することになると思います。 「ブロックソート」で検索するとフリーでは http://www.vector.co.jp/soft/win95/business/se408321.html がヒットしました。 では。
お礼
早速の回答をありがとうございます。 同じ要望がある人は世の中大勢いるようですね。 ダウンロードして使用してみます。
お礼
回答をありがとうございます。 Excelの応用的な使い方の感覚が新たに取得できました。 こうやって数式を応用するものなのですね。 今回の回答のみならず、考え方の切り口が理解でき、これからもステップアップできそうです。