Modificacion de celdas con distinto valor

tengo la columna A y columna C.

Necesito una marco que todo lo que contenga en la columna A, P+ 5 o 6 números me escriba en la columna C, ordenador portatil y en las demas celdas me escriba ordenador personal. Hay más de 10000 celdas y casi todas serian para ordenador personal, las celdas no son consecutivas.

Puede salir una P123456 en la celda 1 y otra en la celda 500, etc

Respuesta
3

Como puedes ve en la imagen esta macro procesa 20000 filas en 1 segundo o menos, te tardas más usando fórmulas

y aqui esta la macro

Sub rellena()
inicio = Time()
Set datos = Range("a1").CurrentRegion
MATRIZ = datos
With datos
    R = .Rows.Count
    nivel = Range("C1").Resize(R, 1)
    For I = 2 To R
        CODIGO = MATRIZ(I, 1)
        LETRA = UCase(Left(CODIGO, 1))
        If LETRA = "P" Then
            LARGO = Len(CODIGO)
            If LARGO > 4 Then nivel(I, 1) = "ORDENADOR PORTATIL"
            If LARGO < 5 Then nivel(I, 1) = "DESCONOCIDO"
        Else
            nivel(I, 1) = "ORDENADOR PERSONAL"
        End If
    Next I
    Range(Range("C1").Resize(R, 1).Address) = nivel
End With
fin = Time()
TIEMPO = Second(fin - inicio)
MsgBox (R & " FILAS PROCESADAS EN " & TIEMPO & " SEG"), _
vbInformation, "AVISO EXCEL"
Set nivel = Nothing: Set datos = Nothing
End Sub

perfecto muchas gracias por tu ayuda y tiempo.

un saludo.

Hola buenos días, podrías ayudarme que cometí un error en el ejemplo, tu macro esta perfecta pero no me explique del todo bien. Te paso imagen para verlo.

Mi fallo fue que lo que contega una P + 5 o 6 numeros me escriba en la columna C, portatil, entonces también tengo el valor PG y también me lo pone como portatil y ese caso sería personal.

Sería así celdas 2 y 3, si tiene una P + 5 o 6 números que en la columna C, me escriba portatil.

Y en las demás celdas que me escriba en la columna C, personal.  Que son  las demás celdas, incluyendo la celda 6 que empieza por PG, hay más ejemplos de otras letras.

Pero valdría con que las celdas como la 2 y 3 sean portatil y el resto personal.

Cambia esta línea

If largo > 4 Then nivel(I, 1) = "ORDENADOR PORTATIL"

por esta linea

If largo > 4 And largo < 7 Then nivel(I, 1) = "ORDENADOR PORTATIL"

1 respuesta más de otro experto

Respuesta
1

Te paso la fórmula;

=SI(Y(EXTRAE($A1;1;1)="P"; ESNUMERO(EXTRAE(A1;2;6)*1));"Ordenador portátil";"Ordenador personal")

Prueba y me dices.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas