Saltar al contenido

UBICAR Y CORREGIR ERROR EN MATRIZ


MarcoP

Recommended Posts

publicado

F22.xlsm

Buenas noches un fraternal saludo.

Tengo el siguiente código del que necesito encontrar la forma de que no me dé un resultado indeseado que obtengo.

Sub MFD()
'

'
' P3FD1 Macro
Dim fin As Long, final As Long
Dim i As Long, j As Long, n As Long
With Sheets("FD")
' With ThisWorkbook.Worksheets("Datos")
fin = Application.CountA(.Range("A:A"))
final = Application.CountA(.Range("1:1"))
For i = 1 To final - 1
scadena = vbNullString
n = .Cells(1, i + 1)
For j = 1 To fin
If .Cells(j, i) = n Then .Cells(j, i).Interior.Color = vbBlack
If .Cells(j, i) = n Then .Cells(j, i).Font.Color = vbRed
scadena = Trim(scadena & " " & .Cells(j, i))
scadena = Trim(Replace(scadena, n, ""))
scadena = n & " " & scadena
Next j
matriz = Split(scadena, " ")
c = 1
For Each numero In matriz
.Cells(c, i + 1) = numero
c = c + 1
Next numero
Next i
End With

    Range("A90").Select
End Sub

Sub MFU()
'

'
' P3FD1 Macro
Dim fin As Long, final As Long
Dim i As Long, j As Long, n As Long
With Sheets("FU")
' With ThisWorkbook.Worksheets("Datos")
fin = Application.CountA(.Range("A:A"))
final = Application.CountA(.Range("1:1"))
For i = 1 To final - 1
scadena = vbNullString
n = .Cells(1, i + 1)
For j = 1 To fin
If .Cells(j, i) = n Then .Cells(j, i).Interior.Color = vbBlack
If .Cells(j, i) = n Then .Cells(j, i).Font.Color = vbRed
scadena = Trim(scadena & " " & .Cells(j, i))
scadena = Trim(Replace(scadena, n, ""))
scadena = n & " " & scadena
Next j
matriz = Split(scadena, " ")
c = 1
For Each numero In matriz
.Cells(c, i + 1) = numero
c = c + 1
Next numero
Next i
End With

    Range("A1").Select
End Sub


El codigo trabaja bien con numeros del 0 al 9, pero no de 0 a 99.

De 0 a 9 trabaja bien, de 0 a 99 da resultados bizarros.

Ese es el problema que necesito corregir. 

  adjunto archivo de excel con una muestra.

 

 

publicado

Buenas, el problema lo tienes en la línea 

scadena = Trim(Replace(scadena, n, ""))

sí scadena contiene "1 0 8 9 10 11" al reemplazar n = "1"  borra el 1 , el 1 del 10 y el 11 completo.  

para evitarlo deberías envolver cada número  entre algún carácter o darle un espacio al principio y final para luego cuando reemplaces lo realices con los espacios también " 1 0 8 9 10 11 " sería algo así 

scadena = Trim(Replace(scadena, " " & n & " ", " "))

saludos

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.