エクセル挑戦問題
スピルを使って文字列を1セルずつに分解回答

エクセルの関数・操作のちょっと難しい問題、Excelチャレンジ問題集
最終更新日:2020-03-09

スピルを使って文字列を1セルずつに分解回答

エクセル挑戦問題回答ページです。

エクセル挑戦問題

2019年にOffice365のExcelに実装された革新的な機能としてスピルがあります。
スピルを上手に使うと、今まで多くの作業列を使う必要があったものが、かなり簡略化された数式で実現することができます。
スピルの詳細については、以下を参照してください。
スピルについて| エクセル入門
2019年にOffice365のExcelに実装された革新的な機能としてスピルがあります。数式を入力したセルから結果があふれて隣接したセルにも出力されるのがスピルです。今までは数式を入れたセルにしか結果を出せませんでしたが、スピルでは隣接するセルにまで結果が表示されます。
問題1
A1セルに、
「いろはに…」
このような文字列が入っています。
文字数不定数です。

この文字列を分解して、B1セル以降に1文字ずつ出力してください。

エクセル Excel 練習問題 スピル

スピルの問題ですので、
B1セルに数式を入れるだけで、C列以降はスピルで表示されるようにしてください。

問題2
問題1を複数行対応させてください。

エクセル Excel 練習問題 スピル

問題1の発展問題です。
B1セルに数式を入れるだけで、2行目以降もC列以降も同時にスピルで出力されるようにしてください。



どちらの問題も、スピルを使う事で1つの数式で実現できます。

スピルを使わない場合は、
B1=MID($A1,COLUMN()-1,1)
として、B1セルを出力範囲にコピーすることで1文字ずつに分解できます。
文字数が決まっていれば良いのですが、不定数の場合はあらかじめ大きめの範囲に数式を設定しておく必要があります。
スピルなら、先頭セルに入れるだけで出力範囲が自動で決まります。

では、お考えください。
すぐに解答を見ずに、必ず自力でやれるだけやってみましょう。

シンキングタイム

シンキングタイム開始


シンキングタイム終了

当サイトのコンテンツ
自分に合った、学習方法を見つけましょう。

エクセル入門
エクセル作業において必須となる操作、関数、ショートカットの使い方を入門・初級・初心者向けに解説しています。★エクセルの基礎を学習する方法★ エクセル入門.ショートカットキー…ショートカットキー一覧 エクセル操作をマウスではなくキーボードで操作します。
エクセル基本操作
エクセルの基本操作について解説。知ってそうで知らない操作や高度な操作まで。日付、時刻に関するあれこれ 数値の書式のあれこれ1.千単位、百万単位2.不要な0を表示せずに、小数点位置を揃える3.ユーザー定義書式で条件付き書式を使う4.Excel2003で、条件によりフォント色を5段階で表示する方法。
エクセル関数超技
エクセルの関数の応用技の解説。関数サンプルと必須の基本技術から応用・高等テクニックまでを紹介しています。1年後の日付、○か月後の日付 複数条件の合計・件数複数条件の合計、複数条件の件数を求める関数式です。

ここで、じっくり勉強して下さい。

エクセル挑戦問題解答

では解答です。

問題1
=MID(A1,SEQUENCE(1,LEN(A1)),1)

エクセル Excel 練習問題 スピル

SEQUENCEを実際の数値に置き換えると、
=MID(A1,{1,2,3,4},1)
配列なので、スピルします。

MID(A1,1,1) , MID(A1,2,1) , MID(A1,3,1) , MID(A1,4,1)
これで、4列に出力されます。
SEQUENCEの引数にLEN(A1)を指定しているので、文字数に応じて出力列が変更される仕組みになります。

問題2
=MID(A1:A3,SEQUENCE(1,MAX(LEN(A1:A3))),1)

エクセル Excel 練習問題 スピル

問題1をそのまま使って、
=MID(A1:A3,SEQUENCE(1,LEN(A1:A3)),1)
このように書いてしまいますが、これでは正しく出力されません。

エクセル Excel 練習問題 スピル

縦だけスピルして横にスピルしません。
これは、横の配列の要素数が行ごとに違う為にこのようになってしまいます。
SEQUENCEを実際の数値に置き換えると、
=MID(A1,{1,2,3,4},1)
=MID(A2,{1,2,3},1)
=MID(A3,{1,2,3,4,5},1)

そこで、横の配列数をA1:A3の最大文字数にします。
SEQUENCE(1,LEN(A1:A3))

SEQUENCE(1,MAX(LEN(A1:A3)))
つまり、3行とも、
=MID(A1,{1,2,3,4,5},1)
=MID(A2,{1,2,3,4,5},1)
=MID(A3,{1,2,3,4,5},1)
配列でスピルしますので、
MID(A1,1,1) , MID(A1,2,1) , MID(A1,2,1) , MID(A1,4,1) , MID(A1,5,1)
MID(A2,1,1) , MID(A2,2,1) , MID(A2,2,1) , MID(A2,4,1) , MID(A2,5,1)
MID(A3,1,1) , MID(A3,2,1) , MID(A3,2,1) , MID(A3,4,1) , MID(A3,5,1)
これで、3行5列に出力されます。

※MID関数は、文字列数より大きい数字を指定してもエラーにならずに空白を返してくれます。



同じテーマ「エクセル挑戦問題回答」の記事

百万単位で表示(百万未満は小数表示、小数位置も合わせる)回答
空白以外のセルの個数(計算結果が空白を除く)回答
指定行数おきに指定行数ずつ色を変更する回答
複数系列の積み上げ棒グラフ回答
億や万の表記を数値化する回答
URLからファイル名を取得(一番右の指定文字以降を抽出)回答
スピルを使って日付の一覧を出力回答
スピルを使って文字列を1セルずつに分解回答


新着記事NEW ・・・新着記事一覧を見る

多階層フォルダ(ディレクトリ)の作成|VBAサンプル集(7月31日)
VBAのインデントについて|VBA技術解説(7月16日)
「VBA Match関数の限界」についての誤解|エクセル雑感(7月15日)
省略可能なVariant引数の参照不可をラップ関数で利用|VBA技術解説(7月12日)
100桁の正の整数値の足し算|エクセル雑感(7月9日)
LSetとユーザー定義型のコピー(100桁の足し算)|VBA技術解説(7月9日)
Variant仮引数のByRefとByValの挙動違い|エクセル雑感(7月5日)
Variant仮引数にRange.Valueを配列で渡す方法|エクセル雑感(7月5日)
Variantの数値型と文字列型の比較|エクセル雑感(7月1日)
VBAのVariant型について|VBA技術解説(6月30日)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.マクロって何?VBAって何?|VBA入門
5.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
8.セルに文字を入れるとは(Range,Value)|VBA入門
9.とにかく書いてみよう(Sub,End Sub)|VBA入門
10.マクロはどこに書くの(VBEの起動)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ