10/28/2020

Excel。セル内の文字をセルごとに一文字ずつ入力したい。またその逆は?とにかく楽したい。【Characters in cells】

Excel。セル内の文字をセルごとに一文字ずつ入力したい。またその逆は?とにかく楽したい。

<MID&COLUMN関数とCONCAT関数>

あるアンケート結果の表があります。


B列の回答欄は、問1から問5までの質問結果をまとめた状態です。

例えば、NO1の「54132」は、問1を「5」問2を「4」というように答えています。


しかしながら、結果を連結してしまっているので、データとして使い勝手が悪いので、次のように、セルごとに結果を表示させたいわけです。


当然、自力でコツコツと入力するとしたら、膨大な時間を費やしてしまうのは明らかです。


Excel VBAでマクロを作ってとか思いがちですが、ちょっとした関数を使えば、比較的容易に、セルごとに文字を入力することができます。


文字列を指定された位置から、指定された文字を抽出したいわけですね。

このような時には、『MID関数』がオススメです。


では、C2に次のような数式を設定します。

=MID($B2,COLUMN(A1),1)

数式をオートフィルでコピーすれば、完成します。


では、簡単にMID関数でつくった数式の説明をします。


最初の引数。

「$B2」。

元の文字列はB列にあります。

オートフィルでコピーするので、複合参照にしています。


2番目の引数には、「COLUMN(A1)」と設定しました。

この2番目の引数は、開始位置を設定するわけですが、C2の数式は、一文字目ですが、D2は、二文字目を抽出させるようにする必要があります。


要するに、開始位置をずらさないといけません。

どうにか、1・2・3…とオートフィルでコピーした時にずれてほしい。

列番号を使えば対応することができそうです。

列番号を算出するには、「COLUMN関数」を使うことで、算出できます。


3番目の引数は、何文字、抽出するの?ということですから「1」と設定すればいいわけです。


これで、セル内の文字を、一文字ずつセルに入力することができます。


さて、今度は逆で、セルごとに一文字ずつ入力されているのを、一つのセルにまとめるには、どうしたらいいのでしょうか?


問1が○とか×ならば、B2には、PHONETIC関数を使う方法もありますが、今回のように数値だと上手くいきません。


今回のようにセルの文字を結合させるのに便利な関数があります。

それが「CONCAT関数」。


このCONCAT関数は新しく登場した関数で、CONCATENATE関数が進化した関数です。


では、B2に次の数式を設定して、オートフィルでコピーしてみましょう。


B2の数式は、

=CONCAT(C2:G2)

たったこれだけです。


これで、一つのセルに、まとめることができました。


CONCATENATE関数では、この範囲選択で文字接続をすることができなかったので、少々面倒でした。