- ベストアンサー
エクセルの関数、VBA? に関する質問です
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
2行目からのデータでしたね。 E2セルには次の式を入力し同じ方法で確定します。 =IF(COUNT($A$2:$A$1000)<ROW(A1),"",INDEX($A$2:$A$1000,SMALL(IF($A$2:$A$1000<>"",ROW($A$1:$A$999)),ROW(A1)))) F2セルには次の式を入力します。 =IF(E2="","",OFFSET(INDEX(A:A,MATCH(E2,A:A,0)),0,2)&IF(OFFSET(INDEX(A:A,MATCH(E2,A:A,0)),1,1)=2,CHAR(10)&OFFSET(INDEX(A:A,MATCH(E2,A:A,0)),1,2),"")&IF(OFFSET(INDEX(A:A,MATCH(E2,A:A,0)),2,1)=3,CHAR(10)&OFFSET(INDEX(A:A,MATCH(E2,A:A,0)),2,2),"")&IF(OFFSET(INDEX(A:A,MATCH(E2,A:A,0)),3,1)=4,CHAR(10)&OFFSET(INDEX(A:A,MATCH(E2,A:A,0)),3,2),"")&IF(OFFSET(INDEX(A:A,MATCH(E2,A:A,0)),4,1)=5,CHAR(10)&OFFSET(INDEX(A:A,MATCH(E2,A:A,0)),4,2),""))
その他の回答 (6)
- KURUMITO
- ベストアンサー率42% (1835/4283)
回答No3です。多くて5名程度が並ぶとのことでしたら、次のようにします。 E1セルには次の式を入力し、式を確定する段階でCtrl+Shift+Enterキーで確定します。その後に下方にオートフィルドラッグします。 =IF(COUNT($A$1:$A$1000)<ROW(A1),"",INDEX(A$1:A$1000,SMALL(IF(A$1:A$1000<>"",ROW(A$1:A$1000)),ROW(A1)))) 配列数式になります。E列のセルの書式設定からセルの表示形式で日付に設定します。 次にF1セルには次の式を入力し下方にオートフィルドラッグします。 =IF(E1="","",OFFSET(INDEX(A:A,MATCH(E1,A:A,0)),0,2)&IF(OFFSET(INDEX(A:A,MATCH(E1,A:A,0)),1,1)=2,CHAR(10)&OFFSET(INDEX(A:A,MATCH(E1,A:A,0)),1,2),"")&IF(OFFSET(INDEX(A:A,MATCH(E1,A:A,0)),2,1)=3,CHAR(10)&OFFSET(INDEX(A:A,MATCH(E1,A:A,0)),2,2),"")&IF(OFFSET(INDEX(A:A,MATCH(E1,A:A,0)),3,1)=4,CHAR(10)&OFFSET(INDEX(A:A,MATCH(E1,A:A,0)),3,2),"")&IF(OFFSET(INDEX(A:A,MATCH(E1,A:A,0)),4,1)=5,CHAR(10)&OFFSET(INDEX(A:A,MATCH(E1,A:A,0)),4,2),"")) E列を選択してから右クリックして「セルの書式設定」から「配置」のタブで「折り返して全体を表示する」にチェックを付けてOKします。
お礼
ありがとうございます。
- fujiponxx
- ベストアンサー率32% (186/580)
=C2&CHAR(10)&C3&CHAR(10)&C4&CHAR(10)&C5 ですよ。
お礼
ありがとうございます。 勉強になります。
補足
ありがとうございます。 >=C2&CHAR(10)&C3&CHAR(10)&C4&CHAR(10)&C5 は理解できるのですが、 A列の日付とE列の日付が一致さた場合に C列を上記のような関数で統合してF列に入力する。 といった関数の作成を考えています。 可能であればご意見頂けると幸いです。 よろしくお願いします。
- fujiponxx
- ベストアンサー率32% (186/580)
ええと、答えをリンクしたと思いますが、 意味がわかりませんか? 実際やって見てできましたが。
お礼
ありがとうございます。 勉強になります。
補足
ありがとうございます。 &CHAR(10)& 知りませんでした。 便利ですね。 ただ、理想は下記のようになります。 A列の1月1日に複数名前があった場合、 右側の日付列の1月1日にその複数の値を &CHAR(10)& を利用し改行して一つのセルに入力できる 関数式はありますでしょうか。 もし可能であれば教えていただけると幸いです。
- KURUMITO
- ベストアンサー率42% (1835/4283)
一日当たりの名前の数は幾つが最大の数になるのでしょうか? 5,6名程度までなら関数で対応が可能ですがそれより多くなれば別の方法を考えなくてはなりません。 また最もやりやすいのは一日当たりの名前を右横の列に順に並べるのでもよいのでしたらそれを提案させていただきます。
お礼
ありがとうございます。 助かります
補足
ご回答ありがとうございます。 一日当たりの名前の数は幾つが最大の数は多くて5名くらいです。 よい解決案がありましたら、教えていただけると助かります。 よろしくお願いします。
- fujiponxx
- ベストアンサー率32% (186/580)
ここに答えがあるっぽいです http://www2.odn.ne.jp/excel/waza/edit.html#SEC16
お礼
ありがとうございます。 勉強になります。
- wkbqp833
- ベストアンサー率36% (319/886)
エクセルの関数だけで、これを実現するのは困難かも VBAをコーディングすれは可能ですが、それでも結構面倒な気がしますね
お礼
色々と勉強になります。 今回教えていただいた関数を他の用途にも 転用してみようと思います。 丁寧な解説、どうもありがとうございました。