こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

エクセルの関数、VBA? に関する質問です
添付画像を大きく変更しました。


添付画像のように、
複数のセルの内容(C列)を一つのセルに改行して
入力する場合(M列)はどのような関数にすればよいのでしょうか。

そもそも関数では実現できないのでしょうか

現状はいったんテキストエディタにコピペした後に
再度それを一つのセルにペーストしています。

何か良い方法があれば、教えて頂けると助かります。
よろしくお願いします。

投稿日時 - 2010-03-24 18:14:47

QNo.5776430

困ってます

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

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),""))

投稿日時 - 2010-03-25 16:36:20

お礼

色々と勉強になります。

今回教えていただいた関数を他の用途にも
転用してみようと思います。

丁寧な解説、どうもありがとうございました。

投稿日時 - 2010-03-25 17:04:52

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(7)

ANo.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します。

投稿日時 - 2010-03-25 15:59:33

お礼

ありがとうございます。

投稿日時 - 2010-03-25 17:05:17

ANo.5

=C2&CHAR(10)&C3&CHAR(10)&C4&CHAR(10)&C5

ですよ。

投稿日時 - 2010-03-25 13:28:47

補足

ありがとうございます。

>=C2&CHAR(10)&C3&CHAR(10)&C4&CHAR(10)&C5
は理解できるのですが、
A列の日付とE列の日付が一致さた場合に
C列を上記のような関数で統合してF列に入力する。
といった関数の作成を考えています。

可能であればご意見頂けると幸いです。
よろしくお願いします。

投稿日時 - 2010-03-25 13:54:58

お礼

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

投稿日時 - 2010-03-25 17:05:48

ANo.4

ええと、答えをリンクしたと思いますが、
意味がわかりませんか?

実際やって見てできましたが。

投稿日時 - 2010-03-25 11:26:39

補足

ありがとうございます。
&CHAR(10)& 知りませんでした。
便利ですね。


ただ、理想は下記のようになります。

A列の1月1日に複数名前があった場合、
右側の日付列の1月1日にその複数の値を
&CHAR(10)& を利用し改行して一つのセルに入力できる
関数式はありますでしょうか。

もし可能であれば教えていただけると幸いです。

投稿日時 - 2010-03-25 12:40:01

お礼

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

投稿日時 - 2010-03-25 17:07:44

ANo.3

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

投稿日時 - 2010-03-25 09:32:39

補足

ご回答ありがとうございます。

一日当たりの名前の数は幾つが最大の数は多くて5名くらいです。

よい解決案がありましたら、教えていただけると助かります。
よろしくお願いします。

投稿日時 - 2010-03-25 10:49:19

お礼

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

投稿日時 - 2010-03-25 17:08:08

ANo.2

ここに答えがあるっぽいです

http://www2.odn.ne.jp/excel/waza/edit.html#SEC16

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

投稿日時 - 2010-03-24 19:29:51

お礼

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

投稿日時 - 2010-03-25 17:08:22

ANo.1

エクセルの関数だけで、これを実現するのは困難かも

VBAをコーディングすれは可能ですが、それでも結構面倒な気がしますね

投稿日時 - 2010-03-24 18:20:19

あなたにオススメの質問