質問: エクセルで作成した一覧表をカード形式にしたい。 エクセルで作成した一覧表をカード形式にしたいのですが 例えばsheet1の 列1のセルa、b、c、d、e、fに 山田さんの住所、氏名、年齢、職業、電話、備考 列2にセルa、b、c、d、e、fに 佐藤さんの住所、氏名、年齢、職業、電話、備考、 列3にセルa、b、c、d、e、fに 大山さんの... (以降は同様の繰り返し)を入力したとき、 sheet2の 列1のセルa、bに山田さんの住所、氏名、 列2のセルa、bに山田さんの年齢、職業、 列3にセルa、bに山田さんの電話番号、備考、 列4にセルa、bに佐藤さんの住所、氏名、 列5にセルa、bに佐藤さんの年齢、職業、 列6にセルa、bに佐藤さんの電話番号、備考、 列7にセルa、bに大山さんの住所、氏名、 列8にセルa、bに大山さんの年齢、職業、 列9にセルa、bに大山さん電話番号、備考、 列10... と表示されるようにしたいのですが sheet2のa1、b1、a2、b2、a3、b3セルに数式を入力し 列4以降にコピーしても飛び飛びになってうまくいきません。 入力規則かと6列目まで増やしてコピーしても 7列目以降に正しくコピーできません。 何か関数が必要なのでしょうか?過去の質問も検索しましたが よく分かりません。よろしくお願いします。
回答: sheet1の各人のデータの列番号は、1,2,3,4,5,.... 対応するsheet2の各人のデータの先頭列の番号は1,4,7,10,... この対応の規則性を見いだせば良いのではないでしょうか。 int((sheet2の列番号 - 1) / 3) + 1 = 対応するsheet1の列番号 でどうでしょうか。列番号はcolumn()で取得できます。 sheet1のデータ範囲にたとえば住所録という名前をつけたとして、 sheet2のa1セルに、=index(住所録,1,int((column()-1)/3)+1) sheet2のa2セルに、=index(住所録,2,int((column()-1)/3)+1) sheet2のb1セルに、=index(住所録,3,int((column()-1)/3)+1) sheet2のb2セルに、=index(住所録,4,int((column()-1)/3)+1) sheet2のc1セルに、=index(住所録,5,int((column()-1)/3)+1) sheet2のc2セルに、=index(住所録,6,int((column()-1)/3)+1) とすると、山田さんのデータを参照できます。 このa1:c2に入れた式は、d1:f2に複写すれば佐藤さんのデータを参照します。お試し下さい。 ただ、sheet2のデータの位置を簡単に移す事もできず、汎用性は疑問ですが。