• ベストアンサー

エクセルの関数、VBA? に関する質問です

エクセルの関数、VBA? に関する質問です 添付画像を大きく変更しました。 添付画像のように、 複数のセルの内容(C列)を一つのセルに改行して 入力する場合(M列)はどのような関数にすればよいのでしょうか。 そもそも関数では実現できないのでしょうか 現状はいったんテキストエディタにコピペした後に 再度それを一つのセルにペーストしています。 何か良い方法があれば、教えて頂けると助かります。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.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),""))

basicisee
質問者

お礼

色々と勉強になります。 今回教えていただいた関数を他の用途にも 転用してみようと思います。 丁寧な解説、どうもありがとうございました。

その他の回答 (6)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.6

回答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します。

basicisee
質問者

お礼

ありがとうございます。

  • fujiponxx
  • ベストアンサー率32% (186/580)
回答No.5

=C2&CHAR(10)&C3&CHAR(10)&C4&CHAR(10)&C5 ですよ。

basicisee
質問者

お礼

ありがとうございます。 勉強になります。

basicisee
質問者

補足

ありがとうございます。 >=C2&CHAR(10)&C3&CHAR(10)&C4&CHAR(10)&C5 は理解できるのですが、 A列の日付とE列の日付が一致さた場合に C列を上記のような関数で統合してF列に入力する。 といった関数の作成を考えています。 可能であればご意見頂けると幸いです。 よろしくお願いします。

  • fujiponxx
  • ベストアンサー率32% (186/580)
回答No.4

ええと、答えをリンクしたと思いますが、 意味がわかりませんか? 実際やって見てできましたが。

basicisee
質問者

お礼

ありがとうございます。 勉強になります。

basicisee
質問者

補足

ありがとうございます。 &CHAR(10)& 知りませんでした。 便利ですね。 ただ、理想は下記のようになります。 A列の1月1日に複数名前があった場合、 右側の日付列の1月1日にその複数の値を &CHAR(10)& を利用し改行して一つのセルに入力できる 関数式はありますでしょうか。 もし可能であれば教えていただけると幸いです。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

一日当たりの名前の数は幾つが最大の数になるのでしょうか? 5,6名程度までなら関数で対応が可能ですがそれより多くなれば別の方法を考えなくてはなりません。 また最もやりやすいのは一日当たりの名前を右横の列に順に並べるのでもよいのでしたらそれを提案させていただきます。

basicisee
質問者

お礼

ありがとうございます。 助かります

basicisee
質問者

補足

ご回答ありがとうございます。 一日当たりの名前の数は幾つが最大の数は多くて5名くらいです。 よい解決案がありましたら、教えていただけると助かります。 よろしくお願いします。

  • fujiponxx
  • ベストアンサー率32% (186/580)
回答No.2

ここに答えがあるっぽいです http://www2.odn.ne.jp/excel/waza/edit.html#SEC16

参考URL:
http://www2.odn.ne.jp/excel/waza/edit.html#SEC16
basicisee
質問者

お礼

ありがとうございます。 勉強になります。

  • wkbqp833
  • ベストアンサー率36% (319/886)
回答No.1

エクセルの関数だけで、これを実現するのは困難かも VBAをコーディングすれは可能ですが、それでも結構面倒な気がしますね

関連するQ&A