Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Excel 2016)
ランダムなセルの文字列結合
投稿日時: 19/01/26 16:42:20
投稿者: JIRO-KUN

	A列	B列	C列
1	ABCD	HEAD	あいうえ
2	EFGH	HEAD	
3	IJ	HEAD	
4	KLMN	HEAD	
5	あ	本文	
6	い	本文	
7	う	本文	
8	え	本文	
9	ABCD	HEAD	おかきくけこさ
10	EFGH	HEAD	
11	IJ	HEAD	
12	KLMN	HEAD	
13	お	本文	
14	か	本文	
15	き	本文	
16	け	本文	
17	こ	本文	
18	さ	本文	
19	ABCD	HEAD	しす
20	EFGH	HEAD	
21	IJ	HEAD	
22	KLMN	HEAD	
23	し	本文	
24	す	本文	
25			
26			
27			
		

 
B列に ”本文”と入力されてる場合、
A列の文字を結合しC列に返したい。(結合し一つのセルに)
返す場所はB列がHEADで一番上のHEADの行に。
本文の行数が異なっています。
C列に入力する関数を教えてください。
説明が下手で申し訳ございません。

回答
投稿日時: 19/01/26 19:03:32
投稿者: んなっと

HEADが必ず4行と決まっているなら
 
    A   B       C
 1 ABCD HEAD   あいうえ
 2 EFGH HEAD       
 3  IJ HEAD       
 4 KLMN HEAD       
 5  あ 本文       
 6  い 本文       
 7  う 本文       
 8  え 本文       
 9 ABCD HEAD おかきけこさ
10 EFGH HEAD       
11  IJ HEAD       
12 KLMN HEAD       
13  お 本文       
14  か 本文       
15  き 本文       
16  け 本文       
17  こ 本文       
18  さ 本文       
19 ABCD HEAD     しす
20 EFGH HEAD       
21  IJ HEAD       
22 KLMN HEAD       
23  し 本文       
24  す 本文       
 
C1
=IFERROR(IF(MATCH("本文",B1:B$1000,0)=5,TEXTJOIN(,TRUE,OFFSET(A5,,,MATCH(TRUE,INDEX(B5:B$1000<>"本文",),0)-1)),""),"")
下方向・↓
 
4行とは限らないときは
 
    A   B       C
 1 ABCD HEAD   あいうえ
 2 EFGH HEAD       
 3 KLMN HEAD       
 4  あ 本文       
 5  い 本文       
 6  う 本文       
 7  え 本文       
 8 ABCD HEAD おかきけこさ
 9 KLMN HEAD       
10  お 本文       
11  か 本文       
12  き 本文       
13  け 本文       
14  こ 本文       
15  さ 本文       
16 ABCD HEAD     しす
17  し 本文       
18  す 本文       
 
C1
=IF(AND(IFERROR(OFFSET(B1,-1,)<>"HEAD",TRUE),B1="HEAD"),TEXTJOIN(,TRUE,OFFSET(A1,MATCH("本文",B1:B$994,0)-1,,MATCH(TRUE,INDEX(OFFSET(B1,MATCH("本文",B1:B$994,0)-1,,1000)<>"本文",),0)-1)),"")
下方向・↓

投稿日時: 19/01/26 21:26:32
投稿者: JIRO-KUN

んなっと様 回答ありがとうございます。
 
HEADは4行とは限らないんですが
すべて4行の例題のエクセルにどちらも試しました。
 
HEADが必ず4行と決まっているなら の方は
C1 と C9 と C19のセルが「#NAME?」となりました。
 
4行とは限らないときは C列すべて「空白」になりました。
 
スペル、文字に間違いはないか確認もしてみたのですが・・・。

回答
投稿日時: 19/01/26 21:37:04
投稿者: んなっと

あああ、ごめんなさい。TEXTJOIN関数は使えない環境なんですね。
では、作業列を使う方法に変えます。

投稿日時: 19/01/26 21:39:18
投稿者: JIRO-KUN

>TEXTJOIN関数は使えない環境なんですね。
 
どうにかすればTEXTJOIN関数が使える環境になるのでしょうか?
バージョンの問題でしょうか?

投稿日時: 19/01/26 21:43:27
投稿者: JIRO-KUN

textjoin関数を検索してみたら下記のように。
 
「Excel2016の2016年2月アップデートで、
concat関数とともに、textjoin関数が導入されています。
 (Excel2016全てで使えるわけではなく、
  一部の契約形態のみ使用できるようです)」
 
どのような契約形態かわかりませんが仕方ないですね。

回答
投稿日時: 19/01/26 22:01:51
投稿者: んなっと

    A   B       C       D
 1 ABCD HEAD   あいうえ   あいうえ
 2 EFGH HEAD          あいうえ
 3 KLMN HEAD          あいうえ
 4  あ 本文          あいうえ
 5  い 本文           いうえ
 6  う 本文            うえ
 7  え 本文             え
 8 ABCD HEAD おかきけこさ おかきけこさ
 9 KLMN HEAD        おかきけこさ
10  お 本文        おかきけこさ
11  か 本文         かきけこさ
12  き 本文          きけこさ
13  け 本文           けこさ
14  こ 本文            こさ
15  さ 本文             さ
16 ABCD HEAD     しす     しす
17  し 本文            しす
18  す 本文             す
 
C1
=IF(AND(IFERROR(OFFSET(B1,-1,)<>"HEAD",TRUE),B1="HEAD"),D1,"")
下方向・↓
D1
=IF(B1="本文",A1,)&IF(AND(B1="本文",B2<>"本文"),,D2)
下方向・↓
D列非表示

回答
投稿日時: 19/01/26 22:05:35
投稿者: んなっと

こっちのほうがいいかも。
 
C1
=IF(B1="HEAD",D1,"")
C2
=IF(AND(B1<>"HEAD",B2="HEAD"),D2,"")
下方向・↓
D1
=IF(B1="本文",A1,)&IF(AND(B1="本文",B2<>"本文"),,D2)
下方向・↓
D列非表示

投稿日時: 19/01/26 22:12:41
投稿者: JIRO-KUN

んなっと様
 
削除されました?
削除されたのも今回のも、
どちらも気持ちよくできました。
このような発想ができませんでした。
素晴らしい発想ですね。
ありがとうございました。