Recherche et suppression de certains caractères dans une colonne de données dans Excel
-
06-09-2019 - |
Question
Je l'ai copié et collé des informations de débogage dans une feuille Excel.
Cependant, il contient des caractères « bizarres » dans certaines cellules d'une colonne, qui devrait par ailleurs contenir uniquement des nombres entiers. Quelle serait la meilleure façon d'éliminer ces caractères en utilisant VBA? Un exemple est illustré dans la liste ci-dessous:
1 **'␁'** <- I'm trying to get rid of the part that I have bolded
2 '␂'
3 '␃'
4 '␂'
Je veux utiliser le fichier en tant que source de données dans une autre application. Merci à l'avance.
La solution 3
Voici une solution qui a fonctionné pour moi, même si elle ne peut pas être très élégant:
Sub Macro1()
' Macro1 Macro
Dim temp As String
For u = 1 To 28000
If Cells(u, 4) <> 0 Then
Cells(u, 4).Select
temp = Mid(ActiveCell.Text, 1, InStr(1, ActiveCell.Text, "'") - 1)
Cells(u, 4) = temp
End If
Next
End Sub
Autres conseils
Essayez ceci (premier code d'affichage de temps ici, alors s'il vous plaît garder avec moi; o). Je crois que je commentais suffisamment de code VBA, mais des questions, laissez-moi savoir.
' Replaces all the charaters in vaFind with strReplace
Sub FindAndReplace(ByVal vaFind As Variant, ByVal strReplace As String, ByVal rngToSearch As Range)
' vaFind is an array containing all the strings you want to replace
' strReplace is what you want to replace it with
' rngToSearch is the range you want to Find & Replace your characters
Dim x As Long
For x = LBound(vaFind, 1) To UBound(vaFind, 1)
rngToSearch.Cells.Replace What:=vaFind(x), Replacement:=strReplace, _
LookAt:=xlPart, SearchOrder:=xlByRows, _
MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Next x
End Sub
' Now if you want to clean it automatically,
' Place the following code INTO any Sheets that you
' are have the debug data placed into.
' NOTE: prefix Asterick and question mark with a tilde to replace those characters "~*"
Private Sub Worksheet_Change(ByVal Target As Range)
' Calls the FindAndReplace sub, and removes all:
' astericks, apostrophes and "Whatever Else You need cleaned"'s
' In this case, in column A
If Not Intersect(Target, Me.Columns("A:A")) Is Nothing Then
Call FindAndReplace(Array("~*", "'", "Whatever Else You need cleaned"), "", Me.Columns("A:A"))
End If
' NOTE: This sub will be called whenever the sheet changes, and only process column A
' You can customize which columns, too.
End Sub
Je pense que les expressions régulières pourraient être plus facile. J'utiliser un jeu d'enregistrements ADO et regarder à travers cela.
Quelques notes sur RegEx
''http://msdn.microsoft.com/en-us/library/ms974570.aspx
Dim objRegEx As RegExp
Set objRegEx = CreateObject("VBScript.RegExp")
objRegEx.IgnoreCase = True
objRegEx.Global = True
''This is a sample string, the field would go here
strText = "q@12""£c"
''Find anything not a-z, 0-9
objRegEx.Pattern = "[^a-z0-9]"
''Replace with a dash, "" is fine too.
strOut = objRegEx.Replace(strText, "-")
Quelques notes sur ADO et Excel
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
strFile = ActiveWorkbook.FullName
strcn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" _
& strFile & ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1';"
cn.Open strcn
rs.Open "SELECT * FROM [Sheet1$]", cn, 3 'adOpenStatic'
Comme vous déboguez - Êtes-vous vraiment sûr de vouloir les supprimer? Ils sont des caractères de contrôle ASCII. Mais là encore je ne sais pas ce que vous déboguez ....
Les caractères que vous voyez sont des caractères unicode qui représentent le caractère de contrôle ascii - donc où vous avez copié les données de celui-ci pour vous a traduit
.Fonction Excel nettoyage standard est conçu supprimer les caractères de contrôle ASCII donc l'habitude de travailler ici.
Mais cette volonté, il supprime tous les caractères unicode dans les images CONTROL gamme
Sub Macro1()
' Macro1 Macro
'
For u = 9210 To 9216
a = Cells.Replace(ChrW(u), "") ' replaces values in whole Worksheet
Next
End Sub
' use this to replace the values in a single column only
' i cant test this at the moment as i don't have Excel handy...
...
a = Range("A1:A2800").Replace(ChrW(u), "") ' replaces values in Col A
...