もしかしますと、スペースではなく、印刷されない他の文字が含まれている可能性もあるのではないでしょうか。
印刷されない文字を取り除くためには、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)
お礼
お礼が遅くなってしまい申し訳ありませんでした。 結局うまくいかず、手動で半角スペースを削除いたしました。 ご回答、ありがとうございました。