49520


教えてください。  
エクセルのA列とB列にいくつかデータが入っていて（可変長：それぞれMAX100個）  
C列に「A列の後ろにB列をつなげたもの」が入るように数式を書きたいのですが  
どのように書けばよいでしょうか。  
数式はあまり長くならないほうがありがたいです。

例

A1:aaa  
A2:bbb  
A3:ccc  
B1:あああ  
B2:いいい  
B3:ううう  
B4:えええ

なら

C1:aaa  
C2:bbb  
C3:ccc  
C4:あああ  
C5:いいい  
C6:ううう  
C7:えええ

よろしくお願いします。


CC BY-SA 4.0
2018-10-22T04:29:43.887
49517
2018-10-22T10:51:50.977
2018-10-22T04:58:31.100
76
18637
question
excel
数式で2つの列をつなげて1列にする。


空行がない前提ですが、こんな数式はどうでしょう。

[code]

    =INDEX(CHOOSE(IF(ROW()<=COUNTA(A:A),1,2),A:A,B:B),IF(ROW()<=COUNTA(A:A),ROW(),ROW()-COUNTA(A:A)),1)
    
[/code]

* * *

追記：  
もっと単純な別解ができたので、こちらで解説します。

[code]

    =INDEX(A:B,IF(ROW()<=COUNTA(A:A),ROW(),ROW()-COUNTA(A:A)),IF(ROW()<=COUNTA(A:A),1,2))
    
[/code]

ポイントはINDEX関数になります。  
A列とB列の値を列数と行数を指定して取得しています。  
例えばINDEX(A:B,2,1)なら"bbb"、INDEX(A:B,3,2)なら"ううう"という具合です。  
A列を取得するだけでしたら、INDEX(A:B,ROW(),1)で十分です。

しかし途中でB列に切り替える必要があるので、もうひと工夫加えます。  
COUNTA関数でA列の行数を取得し、IF関数でA列の行数を超えたらB列から取得するように切り替えます。  
IF関数を抜いたB列を取得している処理は、INDEX(A:B,ROW()-COUNTA(A:A),2)のようになります。

つなげる列数が増えるとこの方法では難しくなってしまいますが、今回は問題を解くには十分と判断しました。


CC BY-SA 4.0
2018-10-22T05:31:45.433
49520
2018-10-22T10:51:50.977
2018-10-22T10:51:50.977
70
70
49517
answer