他社から更新マスターファイル(Excel)をもらいました。 しかし、品名、ロット番号の先頭に通常のスペースでないスペース?が付いています。 いわゆるゴミ? このゴミ?をセルにコピーし、=CODE関数で調べると、31でした。 まず、この数字の意味はなんでしようか? そこで、高速に処理をするため、以前ネットで入手した下記コードを実行したら、このゴミは除去できました。 Dim a As Variant With ActiveSheet.UsedRange a = Application.Trim(Application.Clean(.Cells) .ClearContents '←にしたら更に高速処理されるそうです .Value = a End With 向学のためですが、TRIMはワークシート関数でもあり、VBA関数でもあります。 下記コードではエラーが出ます。なぜ Application でないと駄目でしようか? a = WorksheetFunction.Trim(Application.Clean(.Cells) a = Trim(Application.Clean(.Cells)
=CODE(LeFT(A1,1)) →31 は、制御文字の1つです。 TRIM関数では削除できません。 半角スペースならば、32になります。 ワークシート関数に REPLACE関数で対応できると思います。 =IF(CODE(LEFT(A1,1))=31,REPLACE(A1,1,1,""),A1)
TRIM関数 ワークシート関数とVBAでは、 若干違いますから、よく調べて使いましょう。
引用: 以前ネットで入手した下記コードを実行したら、このゴミは除去できました。
引用: 向学のためですが、TRIMはワークシート関数でもあり、VBA関数でもあります。 下記コードではエラーが出ます。なぜ Application でないと駄目でしようか?
WinArrowさん、いつもお世話になっております。 >ワークシート関数とVBAでは、若干違いますから、よく調べて使いましょう。 確かに調べましたら、 「ワークシートのTRIM関数は文字列中の余分なスペースも削除しますが、VBAのTrim関数は前後のスペースのみを取り除きます。」との記載があり、少し違いますね。 >=CODE(LeFT(A1,1)) →31 は、制御文字の1つです。TRIM関数では削除できません。 やはり、ただのスペースとは違うのですね。 >一言で言うと「仕様」です。 承知しました。 この度はもやもやが取れて、すっきりしました。 ありがとうございました。
利用者の皆様にお知らせです。
マイクロソフト オフィス スペシャリスト(MOS)
ビジネス統計スペシャリスト
IC3(アイシースリー)
VBAエキスパート
アドビ認定プロフェッショナル
Microsoft認定資格
App Development with Swift
IT Specialist
Cisco Certified Support Technician(CCST)
外交官から学ぶ グローバルリテラシー
令和のマナー検定