Chiquilin Site■08.07.05_Excel:表を組み換える(再配列)

はじめに:組換えの必要性
その1:規則性を把握する
その2:行番号と列番号を計算する
その3:INDEX関数で参照
ChiquilinSite

はじめに:組換えの必要性

下記の A2:D4セルのような データを F1:F15セルのように並べ直したい時 あなたならどうしますか? エクセルに慣れていない人なら 手で作業するかもしれませんね。この逆のパターンで F1:F15セルのように並んだデータを A2:D4セルの形に組み換える場合はどうでしょう。
表の組換え
データベースを アクセスで管理していれば 表の組換えで悩んだりはしないでしょうが やはり Excelを使う職場は多いでしょうし 別アプリケーションとの連動を図る上でも データを望みの形に作り変えなければならない場面というのはありえましょう。 またマクロを使えばこのような処理は特別難しくないでしょう。この手の作業は マクロ向きです。ただ数式だけですんなりできるなら それはそれで便利と思いませんか? それが実はそれほど難しくはないとしたら。
ページの一番上へ

その1:規則性を把握する

上記の表の場合 一定の法則に従ってデータが並べればいいことは分かりますね? 組換えをする時もっとも大事なのは どのような規則に従って組み替えればいいのかを把握することです。
並べ換えの法則
分かりやすくする為に E列に連番を振りました。ルールは G列に書いた通りです。
1. 行の順番は 2行目から始まって 5行ごとに1ずつ増加する。
2. 列の順番は「3・4・1・2・×」を繰り返す
3. 5の倍数の時 データを表示しない
この内 一番簡単なのは「3」です。5の倍数というのは「5で割った時に余りが出ない数値」ですから MOD関数を使えば条件を振り分けできます。
■F1セル
=IF(MOD(E1,5)=0,"",参照式)
このように条件を分けてやれば 5の倍数の行は表示されなくなります。
ページの一番上へ

その2:行番号と列番号を計算する

次に「1」の条件を計算します。「2から始まる」と「5行ごとに1ずつ増える」とは分けて考えます。といっても区切りになる行数で割ってやるだけです。
行番号の計算
■H1セル
=E1/5
■I1セル
=INT(H1)+2
勿論 この計算は分けずにまとめてしまうこともできます。
=INT((E1+9)/5)
5行目は表示させませんから「+9」でも「+10」でもいいです。
 
続いて 列番号を計算しましょう。「3・4・1・2」とバラバラの順番ですから 難しいように思うかもしれませんが CHOOSE関数を使えば規則に従って番号を返すことができます。
列番号の計算
■H1セル
=CHOOSE(E1,3,4,1,2,0,3,4,1,2,0,3,4,1,2,0)
ただこの方法では データが多いと大変です。そもそも CHOOSE関数は30個までしか指定できません。そこで連番を「1・2・3・4・5・1・2・3・4・5……」と繰り返すように加工します。
=CHOOSE(MOD(E1-1,5)+1,3,4,1,2,0)
今回は 5行目を表示させませんので 5の倍数行でエラーが返りますが
=CHOOSE(MOD(E1,5),3,4,1,2)
としてもいいです。これで行番号と列番号が計算できましたので 後はINDEX関数を使って 参照するだけです。
ページの一番上へ

その3:INDEX関数で参照

INDEX関数を使って表を組換え
■F1セル
=IF(MOD(E1,5)=0,"",T(INDEX(A:D,(E1+10)/5,CHOOSE(MOD(E1,5),3,4,1,2))))
T関数は 参照しているセルが空白だった時に何も表示させない為に入れています。式の後に「&""」を入れても同じ結果になります。数値を参照する時には使えませんから外します。詳しくは「検索結果が空白の時に空白を返す」を参照して下さい。
今回は連番を振りましたが ROW関数や COLUMN関数を使ってしまえば 連番を式の中に組み込むこともできます。
=IF(MOD(ROW(F1),5)=0,"",T(INDEX(A:D,(ROW(F1)+10)/5,
CHOOSE(MOD(ROW(F1),5),3,4,1,2))))
こんな感じです。逆のパターンで参照する場合もやることは概ね似ています。逆の組換え
■C2セル
=T(INDEX(A:A,B2*5-2))
■D2セル
=T(INDEX(A:A,B2*5-1))
■E2セル
=T(INDEX(A:A,B2*5-4))
■F2セル
=T(INDEX(A:A,B2*5-3))
 
全部同じ式にするなら
■C2セル
=T(INDEX($A:$A,ROW(A1)*5-CHOOSE(COLUMN(A1),2,1,4,3)))
慣れると それほど考えなくてもできるようになると思います。
→参考ファイル(039.xls)
ページの一番上へ
ChiquilinSite トップページへ Copyright(C) Chiquilin_site. All Rights Reserved.
inserted by FC2 system