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.

Était-ce utile?

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
...
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top