プロが教えるわが家の防犯対策術!

エクセル TRIM関数について

何度トライしてもダメだったのでご回答お願いします。

Vlookupでデータを引っ張ってきたかったのですが、
検索値の末尾に半角スペースが入っているため
エラー表示なってしまいます。
TRIM関数を使用してスペースを取り除こうとしたのですが、
どうしても半角スペースが消えません。

何か方法がありましたら教えてください。
宜しくお願いします。

A 回答 (4件)

 もしかしますと、スペースではなく、印刷されない他の文字が含まれている可能性もあるのではないでしょうか。


 印刷されない文字を取り除くためには、CLEAN関数を使用します。
 又、コード番号が160の文字は、TRIM関数やCLEAN関数では取り除く事が出来ません。
 ですから、例えば検索値の元の値がSheet2のA1セルに表示されている場合には、次の様な数式にされては如何でしょうか。

TRIM(SUBSTITUTE(CLEAN(Sheet2!A1),CHAR(160),))


 それから、検索値の方だけではなく、VLOOKUP関数で検索をかける際の、検索範囲に入力されている値の方に、余分なスペースや印刷されない文字等が、含まれている可能性もあるのではないでしょうか。
 ですから、例えば検索範囲のリストがSheet1のA2~D7である場合には、作業用Sheetを設けて、作業用SheetのA1セルに、

=IF(Sheet1!A2="","",TRIM(SUBSTITUTE(CLEAN(Sheet1!A2),CHAR(160),)))

という数式を入力し、
作業用SheetのB1セルに、

=IF(Sheet1!B2="","",Sheet1!A2)

という数式を入力してから、
作業用SheetのB1セルをコピーして、作業用SheetのC1~D1の範囲に貼り付けた後、
作業用SheetのA1~D1の範囲をコピーして、作業用SheetのA2~D6の範囲に貼り付ける事で、
検索用のリストを作成し、こちらのリストの方を基にして、VLOOKUP関数で検索をかける様にされては如何でしょうか。

 他にも、全角文字と半角文字は異なりますから、ASC関数か或いはJIS関数を使用して、全角文字か半角文字のどちらか一方に、揃えなくてはならない場合もあります。
 又、全角のハイフォン(文字コード8541)と全角のマイナス(文字コード8501)は別の文字で、全角のハイフォンはASC関数を使って半角文字にする事が出来ません。

 これらの事も考慮した場合には、検索値に使用する数式は、

TRIM(ASC(SUBSTITUTE(SUBSTITUTE(CLEAN(Sheet2!A1),CHAR(160),),CHAR(8541),CHAR(8510))))

に変更し、
作業用SheetのA1セルに入力する数式は、

=IF(Sheet1!A2="","",TRIM(ASC(SUBSTITUTE(SUBSTITUTE(CLEAN(Sheet1!A2),CHAR(160),),CHAR(8541),CHAR(8510)))))

に変更した方が良いかも知れません。
 只、Excelでは関数の中に他の関数を使用し、関数を二重、三重にする事をネストと言うのですが、Excelの関数はネストのレベルを7(関数を七重)までにしか出来ません。
 ですから、先程の検索値に関しては、作業用Sheetの適当なセル(例えばE1セル)に、

=TRIM(ASC(SUBSTITUTE(SUBSTITUTE(CLEAN(Sheet2!A1),CHAR(160),),CHAR(8541),CHAR(8510))))

と入力しておき、
VLOOKUP関数の部分を次の様にされては如何でしょうか。

=VLOOKUP('作業用Sheet'!E1,'作業用Sheet'!A1:D6,2)

 又は

=VLOOKUP('作業用Sheet'!E1,'作業用Sheet'!A1:D6,2,0)
    • good
    • 1
この回答へのお礼

お礼が遅くなってしまい申し訳ありませんでした。
結局うまくいかず、手動で半角スペースを削除いたしました。

ご回答、ありがとうございました。

お礼日時:2011/05/27 17:20

検索値が文字列(スペースなし)で表の左端が文字列(スペースあり)の場合なら


=VLOOKUP(検索値&"*",表の範囲,列番号,FALSE)
※上記は自分が住所や郵便番号の検索によく利用する方法です。

例(_は半角スペース)
AAA 1
AA_ 2
AB_ 3
ABB 4

AA => VLOOKUP("AA*",表の範囲,列番号,FALSE) => AAAを検索して1が表示
AA_=> VLOOKUP("AA *",表の範囲,列番号,FALSE) => AA_を検索して2が表示
AB => VLOOKUP("AB*",表の範囲,列番号,FALSE) => AB_を検索して3が表示
ABB=> VLOOKUP("ABB*",表の範囲,列番号,FALSE) => ABBを検索して4が表示
AAで2の結果が欲しい場合は、左端の列で昇順の並べ替えを行ってください。

まあ、表の左端のスペースを =TRIM("文字列") で消去した値を左端の列ににコピー&ペーストして
普通にVLOOKUP関数使った方がいいとは思いますけど...
    • good
    • 0
この回答へのお礼

お礼が遅くなってしまい申し訳ありませんでした。
結局うまくいかず、手動で半角スペースを削除いたしました。

ご回答、ありがとうございました。

お礼日時:2011/05/27 17:17

スペースならばTRIM関数で除去できます。

それでも駄目な場合は他の文字(例えば、改行コード等)が混入していると考えられます。
多分、複数の特殊文字が混入していると思えないので検索値を=LEFT(セル,LEN(セル)-1)としては如何でしょうか。
    • good
    • 0
この回答へのお礼

お礼が遅くなってしまい申し訳ありませんでした。
結局うまくいかず、手動で半角スペースを削除いたしました。

ご回答、ありがとうございました。

お礼日時:2011/05/27 17:17

>どのようにして半角スペースが除けなかったことがわかったのでしょうか?



元データがA1セルにあるなら、まずB1セルに「=A1=TRIM(A1)」と入力して「FALSE」か返るか調べてみてください。

もし「FALSE」が返らない場合は、一番右の文字が半角スペースであるかどうか確認するため「=CODE(RIGHT(A1))」と入力して半角スペースの「32」が返るか調べてください。
    • good
    • 0
この回答へのお礼

お礼が遅くなってしまい申し訳ありませんでした。
結局うまくいかず、手動で半角スペースを削除いたしました。

ご回答、ありがとうございました。

お礼日時:2011/05/27 17:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!