- ベストアンサー
エクセルの表引きについて知りたい
- エクセルの表引きについて教えてください。実際に表引きといえるかどうかわからないので、できるか、できないかだけでも知りたいです。
- sheet1にはA列、B列、C列のデータがあります。C列でグループ分けされており、第一条件でソートされています。sheet2ではA列に黒枠罫線が引かれており、この罫線の中にsheet1のC列のグループごとにA列のデータを振り分けたいです。
- sheet2のA列へはC列のa,b,cの各データの個数より余分に枠罫線がひかれているため、入りきらないことはありません。他の方法や条件付書式を使って解決する方法があれば教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Sheet1の1行目に項目が入力されている場合、別シートのセルに以下の数式を入力ししてください。 C2セル(C列のデータを表示) =INDEX(Sheet1!C:C,SMALL(INDEX((MATCH(Sheet1!$C$2:$C$10&"",Sheet1!$C$2:$C$10&"",)<>ROW($C$2:$C$10)-1)*1000+ROW($C$2:$C$10),),MOD(ROW(A1),10)+INT(ROW(A1)/10))) C3(C11セルまでオートフィルコピー) =IF(COUNTIF(Sheet1!$C$2:$C$10,C2)>MOD(ROW(A1),10),C2,"") 上記のC2:C11セルを選択して下方向にオートフィルコピー。 A2セルに以下の式を入力し、右方向に1つ下方向にデータ数分だけオートフィル。 =IF($C2="","",INDEX(Sheet1!A:A,SMALL(INDEX((Sheet1!$C$2:$C$100<>$C2)*1000+ROW($C$2:$C$100),),MOD(ROW(A1),10))))
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
関数による条件(C列のa,b,cおのおの)の抜き出しになります。 関数では抜き出しは非常に式が複雑になります。 1条件の抜き出し問題は、Googleででも「imogasi方式」で照会して、回答の中の(私以外の回答の)難しい式を見てください。 ーー もうひとつ、10の倍数行+1から次の分類を開始することです。 それぞれ、1,11,21・・に別の式を入れるのならまだやさしいかもしれないが、1律(1パターン)の関数式で全行を賄うとなると(式の複写で解決するとなると)、出来ても式がとても、さらに複雑になると予想。 ーー これはVBA向けの課題です。 C列の値が同じ間は次の行に転記 変わったら次の、10の倍数+1行に飛んで転記 (C列のa,b,c・・は10個以内の出現とする) ーー または 新しいシートにおいて、C列の値が変わったら10-件数の行を行挿入する手もある。 次は10の整数倍+1に代入する。 罫線はあとからでも簡単に(VBAででも)付け加えらる。 ーー 関数やVBAができないなら、C列のaの行範囲をコピーして、Sheet2の適当なところへに貼り付けるほうが、完成は早い。 ==== imogasi方式でやってみた 例データ Sheet1 A2:C16 A16: C17以下は略 B,C列は作業列=関数式で出す A列 B列 C列 a 11 1 a 12 2 a 13 3 b 21 11 b 22 12 c 31 21 c 32 22 c 33 23 c 34 24 d 41 31 e 51 41 e 52 42 f 61 51 f 62 52 f 63 53 B2の式 =IF(A2=A1,C1+1,(INT(C1/10))*10+11) C2の式 =B2-10 式を下方向に式複写 ーーー Sheet2 A1:A15 a a a b b 以下略 A1の式 =IF(ISERROR(MATCH(ROW(),Sheet1!$C$1:$C$100,0)),"",INDEX(Sheet1!$A$1:$A$100,MATCH(ROW(),Sheet1!$C$1:$C$100,0))) 下方向に式を複写する。 質問のA、B列を増やして考えるには INDEX(Sheet1!$A$1:$A$100 の範囲を2列にして、INDEX関数の列を1,2,3にそれぞれ指定すれば出来る。
お礼
imogasi 様 ありがとうございました。お蔭様で解決しました。 「imogasi方式」で勉強させていただきます。 丁寧に教えていただき助かりました。 大切に使わせていただきます。 簡単で恐縮ですが、お礼申し上げます。
- mu2011
- ベストアンサー率38% (1910/4994)
>関数とか表引きではできないとすると、他の方法はあるでしょうか。 ⇒関数や条件付き書式は無理、マクロ(VBA)になると思います。 その他の方法ですが、以下の操作で可能と思いますが如何でしょうか。 ・Sheet1のグループ毎に10行の差分行を挿入 ・Sheet1のA:C列をコピー後、Sheet2に「形式を選択して貼り付け」の「値」を選択して貼り付け
お礼
mu2011 様 ありがとうございました。 大変勉強になりました。 簡単で恐縮ですが、お礼申し上げます。
お礼
MackyNo1 様 ありがとうございました。お蔭様で解決しました。 複雑な関数をを作っていただき恐れ入ります。 勉強しながら大切に使わせていただきます。 簡単で恐縮ですが、お礼申し上げます。