Pregunta

He copiado y pegado información de depuración en una hoja de Excel.

Sin embargo, contiene algunos caracteres "raro" en algunas celdas de una columna, que de otro modo debería contener sólo números enteros. ¿Cuál sería la forma más fácil de eliminar este tipo de personajes con VBA? Un ejemplo se muestra en la lista siguiente:

1 **'␁'** <- I'm trying to get rid of the part that I have bolded
2 '␂'
3 '␃'
4 '␂'

Quiero usar el archivo como fuente de datos en otra aplicación. Gracias de antemano.

¿Fue útil?

Solución 3

He aquí una solución que funcionó para mí, aunque puede que no sea muy elegante:

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

Otros consejos

Probar (código de contabilización primera vez aquí, así que por favor tengan paciencia conmigo; o). Creo que os comentaba el código VBA suficiente, pero alguna pregunta, házmelo saber.

' 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    

Creo que las expresiones regulares podrían ser más fácil. Me gustaría utilizar un conjunto de registros ADO y mirar a través de eso.

Algunas notas sobre expresiones regulares

''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, "-")

Algunas notas sobre ADO y 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'

Como se depura - ¿Estás seguro de que quieres para eliminarlos? Son caracteres de control ASCII. Pero, de nuevo, no sé lo que está depurando ....

Los personajes que están viendo son los caracteres Unicode que representan el carácter de control ASCII - así que donde quiera que haya copiado los datos de que se ha traducido para usted

.

Función de Excel estándar Clean está diseñado eliminar los caracteres de control ASCII lo tanto no funcionara aquí.

Pero esta voluntad, que elimina todos los caracteres Unicode en los cuadros de control de margen

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
...
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top