数字以外のすべてを取り除く(Microsoft Excel)
Lindaには、英字と数字を含む列があります。彼女は数字を保持し、アルファベットを削除する必要があります。たとえば、セルに10003E111が含まれていて、最終的に10003111になりたいとします。
この問題に取り組む方法はいくつかあります。ただし、解決策を進める前に、実際には壊れていないものを変更しようとしていないことを確認する必要があります。たとえば、数値に表示される「E」が数値の形式の一部ではないこと、つまりべき乗の指定ではないことを確認する必要があります。そうである場合は、基になる数値の性質が変わるため、文字を削除する必要はありません。
文字が数値の形式の一部ではないと判断した場合は、最初に数式を使用して英字を削除してみてください。
変更する値が列Aにある場合は、列Bに次の数式を入力できます。
=SUM(MID(0&A1,LARGE(INDEX(ISNUMBER(--MID(A1, ROW($1:$99),1))ROW($1:$99),),ROW($1:$99))+1, 1)10^ROW($1:$99)/10)
Ctrl + Shift + Enterを押して、これを配列数式として入力してください。その結果、列Bには、英字なしで列Aの値が含まれます。 [形式を選択して貼り付け]を使用して、情報を列Bから別の列にコピーし、数式の結果ではなく実際の値を取得することができます。
このアプローチは、単一のブックで短期的に使用する場合に最適ですが、この種のデータ処理をより頻繁に行う必要がある場合は、処理を行うためのユーザー定義関数を作成する必要があります。次に例を示します:
Function OnlyNums(sWord As String) Dim sChar As String Dim x As Integer Dim sTemp As String sTemp = "" For x = 1 To Len(sWord) sChar = Mid(sWord, x, 1) If Asc(sChar) >= 48 And _ Asc(sChar) <= 57 Then sTemp = sTemp & sChar End If Next OnlyNums = Val(sTemp) End Function
この関数は、ワークシートセル内から呼び出すことで使用します:
=OnlyNums(A1)
この関数は数値を返します。処理を行うためにさらに短いマクロを作成する場合は、次のことを考慮してください。
Function StripChar(aText As String) Dim I As Integer StripChar = "" For I = 1 To Len(aText) aChar = Mid(aText, I, 1) Select Case aChar Case "0" To "9" StripChar = StripChar & aChar End Select Next End Function
この関数を使用するには、ワークシートで次のいずれかを使用します。
=STRIPCHAR(A1) =VALUE(STRIPCHAR(A1))
1つ目は数字で構成されるテキスト文字列を返し、2つ目はその文字列の数値バージョンを返します。
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
link:/ excelribbon-ExcelTipsMacros [ここをクリックして、新しいブラウザタブでその特別なページを開きます]
。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(11750)は、Microsoft Excel 2007、2010、2013、および2016に適用されます。
Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります:
link:/ excel-Getting_Rid_of_Everything_Except_Numbers [Getting Rid of Everything ExceptNumbers]
。