)するには、その値が左端からいくつ目になるかを常に数えないといけません。課題にあるように「字数は一定ではない」からです。そこで、区切りの直後にある値を結合するようにしておきます。しておけば、同じ値がいくつあって気にしなくてもよくなります。関数を使う場合より作業列が1つ増えるのがわかりました。関数を使うことにしました。関数は、「指定された文字列を他の文字列の中で検索し、その文字列が最初に現れる位置を左端から数え、その番号を返します。G列とH列で使っている数式G列とH列で、数字と英字を別々に取り出しています。関数を使って、E列の値のうち区切りより前を取り出しています。関数を使って、区切りより後ろを全部取り出しています。関数の書式は次のようです。[文字数])左側から何文字取り出すかを、引数「文字数」で指定します。関数の書式は次のようです。文字数)引数「開始位置」は、元の文字列の何文字目から取り出し始めるかの指定です。引数「文字数」は、「開始位置から何文字取り出すか」の指定ですから、あり得ないくらい大きい値を式のなかに書いてあります。)これで、数字と英字が混在している文字列をそれぞれに分けることができます。結果を得るまでに必要な一つひとつの処理を作業列にすることで、各数式はできるだけ単純なものにして、全体として何をしているかを誰にでも理解しやすくしたつもりですが、どうでしょう。関数のネストや配列数式を使えば、値を入力する必要がなくなるのに......。感じるなら、「仕事でつくるファイルは、できるかぎり誰もが簡単に理解できるようにしておく」という大原則を忘れています。確かに、区切りと結合する値を入力する作業が面倒と言えば面倒ですよね。ネット検索で見つかるような関数のネストや配列数式を使えば、その作業は無くなります。我々の職場では何をしているかを理解できる人が限られるファイルになります。「(誰にでも理解しやすくしておくために)区切りと結合する値を入力する作業」を避けたくて、「(職場で理解できる人が限られる)配列数式や関数のネストを使う」というのは、私に言わせれば、乱暴な仕事の仕方です。ここで紹介したやり方だと、何をしているかを誰もが簡単に理解しやすいようにしておけます。「誰にでも理解しやすい」という効用は、区切りと結合する値を入力する少々の面倒を込みにしてもまだ利のほうが多いと、私は判断しました。(今回はデータ数が何百、何千とあるわけでもないですし。)元の文字列を見ながら値を入れていくだけなので、勤め始めたばかりの新入社員やパートタイマーの方、アルバイトの方にも無理なくやってもらえます。上図でいえば、入力してもらうのは実質的にC列だけです。元の文字列はすでにありますし、B列の「区切り」やD列からH列の数式は、あらかじめ入れておけます。数式がエラーを起こしますが、C列に値を入力したら消えるエラーなのでそのままでよいと思います。内部だけで使うものですし、エラーを非表示にしなければならない具体的な理由もありません。列が増えて見づらければ処理の途中にあたる列を非表示にしたり、必要なレイアウトをつくった別のシートから値を参照すればよいのは、前出のリンク先で述べた通りです。使っている関数を知らない人もいるから、誰にでも理解しやすいとは言えないのでは――。職場には各関数の使い方をよく知らない人もいるでしょうが、それらの理解は各人の頑張りどころだと私は思います。我々の職場では、配列数式を使わなければならないことなんて「無い」と言い切っても言い過ぎではないぐらいですが、関数を使わないで済ませることはできません。ここで使っている関数は、我々の日々の仕事でしばしば使います。理解しておかなければならない具体的な理由があるといえます。これらの関数をよく知らない人が職場にいるかもしれませんが、理解できるように各々頑張ってください。仕事に必須ですから――ということです。理解のための支援は、私も含めて周囲が頑張らないといけません。「仕事に必要なんだから理解しておいてよ」と言うだけではだめです。関数のネストや配列数式を使うべき具体的な理由があって使う場合も、大原則は変わりません。何をしていて、どうなっているのかを、わかりやすく説明したものを用意するなどしてください。「仕事でつくるファイルは、できるかぎり誰もが簡単に理解できるようにしておく」という大原則は、そこまで含んでの話です。そもそも、「職場には、使っている関数をよく知らない人もいる」からこそ、配列数式や関数のネストなんてややこしいものを使わないで――作業列で――済ませられるならそのほうがいいでしょう。上記では「私、わかってます」風な書き方をしてますが、けっこう悩みました。「共通の区切りがあれば話は簡単」というのは、割と早めに思いついたのですが、どうやれば区切りを設けられるかがわかりませんでした。いっときは、本当に配列数式を使わないと、これはさすがに無理かも......という気持ちになりましたし。1日中こればかりやっているわけにもいかなかったので、結局、「元の文字列を部分的に置換すればよい」と思いつくまでに延べで4日ぐらい、時間にすると4、5時間かかりました。取っ掛かりさへつかめてしまえば、あとは早かったです。処理の一つひとつを行っているのは、普段から使い慣れている関数ですから。(画像をつくるほうが時間がかかったぐらいです。)最終的に、誰にでも任せてやってもらえる仕組みになったと思います。冒頭のリンク先で、「作業列をどう使うかを考えるのに、それなりの時間はかかるでしょう」と述べたのはこういうことです。アイデアを思いつくまでに時間がかかることがあるんです。「ややこしい配列数式を頑張って理解して使うことに時間をかけるよりは、作業列をどう使うかを考えるのに時間をかけたほうが、結局は業務全体の効率を上げることにつながる」――という思いも変わっていません。ちなみに、今回は課題に入っていませんが、数字が英字(あるいは、英字が数字に)挟まっている場合もあるかと思います。いう場合も、上記と同様の考え方で処理できます。長くなったので、それについては次の記事で。アプリの修正をやってくれたら嬉しいぜ。数字と英字が混在した文字列からそれぞれを別々に取り出す。数字と英字が混在した文字列からそれぞれを別々に取り出す。アプリの修正をやってくれたら嬉しいぜ。数字と英字が混在した文字列からそれぞれを別々に取り出す。多いのか、少ないのか。macでセルの値を削除できなくして、オートフィルタは使えるようにしておく。ユーミンの『ノーサイド』って......。それは「なんか違う」という気もするが......。それら以外」をわかるようにする。「アクティブ列との相違」を使って、他のセルとは異なっている数式を見つける。Excelで、姓と名前の間に全角スペースを入れる。B列に入力があったら、A列に連番を自動で入れる。B列に入力があったら、A列に連番を自動で入れる。B列に入力があったら、A列に連番を自動で入れる。