質問: 教えてください。 エクセルの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:えええ よろしくお願いします。
回答: 空行がない前提ですが、こんな数式はどうでしょう。 ``` =INDEX(CHOOSE(IF(ROW()<=COUNTA(A:A),1,2),A:A,B:B),IF(ROW()<=COUNTA(A:A),ROW(),ROW()-COUNTA(A:A)),1) ``` 追記: もっと単純な別解ができたので、こちらで解説します。 ``` =INDEX(A:B,IF(ROW()<=COUNTA(A:A),ROW(),ROW()-COUNTA(A:A)),IF(ROW()<=COUNTA(A:A),1,2)) ``` ポイントは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)のようになります。 つなげる列数が増えるとこの方法では難しくなってしまいますが、今回は問題を解くには十分と判断しました。