Excelファイルには何千ものデータがあります。これらはさまざまなWebサイトからスクレイピングされたデータであり、最初はCSVファイルに保存されてから、Excelに移行されます。このデータは私のウェブサーバーで使用するためのものです。
今私の問題はあるということですhorizontal tabs
多くの中でどこかに隠されていますspaces
、そしてそれらは私のウェブサーバーに重大な問題を引き起こしています。
ここで明確にするための例を示します。
Excelのデータ: "これはセルです"
RLパラメータとして使用するためにエンコードされたときのデータ: "This%20is%09a%20cell"
間にあるスペースの1つが%09にエンコードされていることがはっきりとわかります。これは、水平タブを表します。これは私のサーバーから深刻な問題を引き起こしており、これを特定して交換する必要があります。
では、Excelで水平タブを見つけるにはどうすればよいですか?
Burgiの答えはうまくいきますが、数式でいっぱいのワークシートでデータセット全体を複製する必要はなく、数行のスクリプトで同じことを実現できます。
_Sub ReplaceTabs()
Dim c As Range
For Each c In ActiveCell.CurrentRegion
c.Value = Replace(c.Value2, Chr(9), Chr(32))
Next c
End Sub
_
関連するすべてのセルをステップスルーする方法はいくつかあります(たとえば、ActiveSheet.Range("A:A")
などで特定の列をターゲットにするか、問題のセルを選択して_Selection.Cells
_を使用できます)が、この方法は機能しますセルが隣接していて、タブが任意のセルにある可能性がある場合。
それは超高速ではありませんが(私のマシンでは200,000セルは約10秒かかりました)、十分に速いはずです。
これが一般的なタスクである場合は、これをインポートスクリプトに組み込むことができます。
このコードはあなたのために働くはずです:
_=SUBSTITUTE(A1,CHAR(9),CHAR(32))
_
上記の式は、指定された文字列内のCHAR(9)
のすべてのインスタンスをCHAR(32)
に置き換えます。
CHAR(9)
-タブ文字CHAR(32)
-スペース文字Windowsが使用するルックアップテーブルについては、これを参照してください wiki記事 。
マクロの動作中に更新をオフ/オンにするLunatikの回答を高速化するため。
Dim tmp As Boolean
tmp = Application.ScreenUpdating
' this stores current value
Application.ScreenUpdating = False
Dim c As Range
For Each c In ActiveCell.CurrentRegion
c.Value = Replace(c.Value2, Chr(9), Chr(32))
Next c
Application.ScreenUpdating = tmp