\r\n\r\n
microsoftexcelの複雑なセルから情報を抽出することに苦労している人は少なくありません。この関数を使ってExcelから数値やテキストを抽出する方法について書いた記事に寄せられた多くのコメントや質問が、それを裏付けている。Excelのワークシートから必要なデータを分離する方法は、必ずしも明確でないことは明らかです。
ここでは、その記事の中からいくつかの問題を選んで解説していますので、その解決方法をご覧ください。Excelを早く覚えるのは簡単ではありませんが、このような現実的な問題を使うことは、とても役に立ちます。
読者のアドリさんからは、次のような質問がありました。
COIL112X2.5COIL90X2.5COIL84X2.0COIL118.4X1.8COIL128.9X2.0 というように、リストから最初の数字のセットを抽出したいのですが、どのような数式を使えばよいでしょうか。
抽出する数字の長さが異なるため、MID関数を使うよりも少し複雑になりますが、いくつかの異なる関数を組み合わせることで、左側の文字と「X」、右側の数字を取り除き、新しいセルに必要な数字だけを残すことができます。
この問題を解くのに使った公式は以下の通りです。
=VALUE(LEFT((RIGHT(A1,(LEN(A1)-4))),FIND("X",A1)-5))途中から、どのような仕組みになっているのか、解決策を考えてみましょう。まず、FIND関数から。この例では、FIND("X"、A1)を使用します。この関数は、セルA1から文字Xを探す。Xが見つかったら、その位置を返す。例えば、最初のエントリ COIL112X2.5 に対しては 8 が返され、2番目のエントリに対しては 7 が返されます。
次に、LEN関数について見てみましょう。正しい関数と組み合わせれば、セルから最初の4文字を除いた文字列が得られるので、各セルの先頭から「COIL」が削除されることになります。この部分の計算式は次のとおりです。 RIGHT (A1, (LEN (A1) - 4)).
次のレベルは、LEFT機能です。これで、FIND関数でXの位置を決定し、RIGHT関数で「COIL」を取り除き、LEFT関数で残りを返しています。これをさらに分解してみましょう。この2つの議論を単純化すると、次のようになる。
=LEFT("112X2.5", (8-5))LEFT関数は、文字列の左端3文字を返します(引数の最後に"-5 "を付けると、文字列の最初の4文字を数えて正しい文字数が消去されるようになります)。
最後に、VALUE関数は、返される数値がテキストとしてではなく、数値としてフォーマットされていることを保証します。この例は、Excelで動くテトリスゲームを作るほど面白いものではありませんが、いくつかの関数を組み合わせて問題を解決する方法を示す良い例となります。
読者のヤドゥ・ナンダンさんからも同様の質問がありました。
数字とアルファベットを分離する方法を知りたいのですが。
別の読者であるTim K SWは、この特殊な問題に対する完璧な解決策を提供してくれた:。
A1に4552dfsdg6652sdfsdfd5654があり、これらの数字を3つのセルに抽出したいとしています。B1:=MID(A1,1,4) C1:=MID(A1,10,4) D1:=MID(A1,21,4) となります。
これらの数式はかなり単純ですが、MID関数に慣れていないと、その仕組みがわからないかもしれません。MIDには、セル、結果の先頭の文字数、抽出すべき文字数という3つのパラメータがあります。例えば、MID (A1,10,4) は、Excelに文字列の10文字目から4文字を取るように指示します。
この長い数字と文字の羅列から、3つのセルで3種類の中間関数を使うことで数字を抽出することができる。当然ながら、この方法は各セルに常に同じ数の文字(文字と数字)が入っている場合にのみ有効です。各計算式の数値が異なる場合は、より複雑な計算式が必要になります。
記事の中で最も難しい要望を出したのは、読者のダリルである。
487.500 (Nett 50% OFF)Rp.256.500 Nett 40% OFFRp99.000Rp.51.000/orang Nett (50% OFF)のような非常に書式化されていないエントリーをどのように分離するのかお聞きしたいだけなのです。
この問題を調べるのに時間を費やしましたが、自分では解決策を思いつかなかったので、Redditにアクセスしました。ユーザーのUnrepiredyMnastは、長くて非常に複雑なこの数式を提供してくれました。
=SUMPRODUCT(MID(0&LEFT(A1,IFERROR(SEARCH("%",A1)-4,LEN(A1))),LARGE(INDEX(ISNUMBER(--MID(LEFT(A1,IFERROR(SEARCH("%",A1)-4,LEN(A1))),ROW($1:$99),1))*ROW($1:$99),0),ROW($1:$99))+1,1)*10^ROW($1:$99)/10)このように、この数式を解読するにはかなり時間がかかり、Excelの関数に関する非常に深い知識が必要です。ここで何が起こっているのかを正確に把握するためには、あまり馴染みのないいくつかの関数を理解する必要があります。1つ目はIFERRORで、エラー(通常は#N/aや#DIV/0のようにポンド記号で表される)を捕らえ、それを別のものに置き換えます。上記で、IFERROR (SEARCH ("%, A1) -4, LEN (A1)) が表示されます。少し分解してみましょう。
IFERRORは、最初のパラメータであるSEARCH("%", A1) - 4を調べます。したがって、セルA1に"%"があれば、その位置を返し、そこから4位置を減算します。文字列の中に「%」がない場合、Excelはエラーを発生させ、代わりにA1の長さを返します。
例えば、SUMPRODUCTは配列の要素を掛け合わせた後、足し算をする関数です。GREATは範囲内の最大の数値を返し、ROWはドル記号と組み合わせて行への絶対的な参照を返します。
これらの関数がどのように連動しているかを理解するのは簡単ではありませんが、式の途中から外側へ向かうと、何をやっているのかが分かってくるでしょう。時間はかかりますが、仕組みに興味がある方は、Excelのシートに落とし込んで遊んでみるといいと思います。それが一番の近道です。
(また、このような問題を避けるためには、データをよりきれいにインポートすることが一番です。これは常に選択できるわけではありませんが、第一の選択とすべきです)。
このように、Excelの問題を解決する最善の方法は、一度に一歩ずつ進むことです。エレガントなソリューションが得られることもあれば、非常に長く、分かりにくく、複雑なものが得られることもあります。でも、うまくいったら成功です!
助けを求めることを忘れないでください。世の中には非常に優秀なExcelユーザーがおり、厄介な問題を解決する上で彼らの助けは非常に貴重なものとなります。
厄介な抽出問題を解決するための提案はありますか?上記の問題に対して、私たちが持っている他の解決策をご存知ですか?そのほかにもアイデアがあれば、下のコメント欄で共有してください。