Excelの行列を一列に並べる

      No Comments on Excelの行列を一列に並べる

時に、行列を一列に列べたいときが有ります。例えば、乗車料金表は良く行列に記載されます。出発地と目的地はそれぞれ行と列で表します。行と列の交差点は料金です。この料金表を関係型データベースに入れる場合は、一列に並べられてから入れるのが殆どです。例えば、下記の図に示されたようです。ultimate_todo手動で一列ずつでのコピーは得策でき有りません。数式を使いましょう。

まずはタスクの目的を明確にします。六行五列の行列に、26この英文字が並べられています。これを縦一列に並べます。合わせて三列で、左から右へそれぞれ行の名称、列の名称、対応の英文字になります。全部26個ありますが、5個ごとに一行進みます。行が進む度に、列は先端に戻ります。これは割算とMOD関数の動作とほぼ一致します。まずは行の番号を求めてみまます。

cut_cols結果の三列に望む内容としては、第一行から第五行まではあの行の英文字が欲しいです。しかし、1/5..4/5は1未満ですが、5/5は1になります。言い換えますと、同じ「あ」行なのに、割算の結果では整数の部分は一致しません。これは不便なので、結果の行を数えることは1からではなく、0からにします。つまり、補助として、I3:I28に0..25の26個の数字を入れます。O列とP列にそれぞれ行と列の番号を入れます。(Aを持つセルを(1,1)にします。)O3に「=FLOOR(I3/5,1)+1」を、P3に「=MOD(I3,5)+1」をそれぞれ入れます。(FLOORの作用は少数を削ります。MOD関数は割算で剰余を求めるものです。) O3とP3をO28とP28に引いて、全26個の座標を作ります。

最後のステップはK3に「=INDEX(B$3:B$8,O3)」を、L3に「=INDEX(C$2:G$2,1,P3)」を、M3に「=INDEX(C$3:G$8,O3,P3)」を入れて、28行目まで引きます。これで完了になります。

 

Leave a Reply

Your email address will not be published. Required fields are marked *