Como extraer datos de una celda y posteriormente evaluar si es 10, 11 o 12 y que copie de lo contrario que multiplique por -1

Tengo el siguiente código que extrae los dos primeros dígitos de la izauierda:

Dim final As Long
Dim x As Long
final = Range("A65536").End(xlUp).Row
For x = 2 To final
    Cells(x, 2) = Mid(Cells(x, 1), 1, 2)
Next

y quiero modificarlo para luego de la extraccion evalue si es igual a 10, 11 o 12 si cumple la condiciòn que copie la celda E7 de la hoja 4 y la pegue en la hoja 6 C2, si no cumple esa condiciòn es decir, que es 21, 22 y 23 entonces que tome la celda E7 de la hoja 4 y la multiplique por -1 para pegarlo en la hoja 6 C2. Tomar en cuenta que la busqueda es en un rango de còdigos que se encuentra en la hoja 2 fila2 columna A.

1 respuesta

Respuesta
1

Si se recorre la col A de Hoja2... ¿dónde se ubican todos los resultados que cumplan las condiciones? ¿O ya sabes que hay una sola coincidencia?

La macro tal como la solicitas quedaría así (solo ajusta el nombre de las hojas si fuese necesario):

Sub consulta()
Dim final As Long
Dim x As Long
Dim ho4, ho6
'declaramos las otras hojas
Set ho4 = Sheets("Hoja4")
Set ho6 = Sheets("Hoja6")
final = Range("A65536").End(xlUp).Row
For x = 2 To final
    Cells(x, 2) = Mid(Cells(x, 1), 1, 2)      'coloca en col B los 2 dígitos
    If Cells(x, 2) > 9 And Cells(x, 2) < 13 Then
        ho6.[C2] = ho4.[E7]
    ElseIf Cells(x, 2) > 20 And Cells(x, 2) < 24 Then
        ho6.[C2] = ho4.[E7] * -1
    End If
Next
End Sub

Sdos  y no olvides valorar la respuesta.

Elsa

https://youtube.com/channel/UCSftX2GNQiTDDm0C6H9wEVA

en la hoja6 donde pega el resultado en la celda C2 queda fija, lo que busco es que sea un rango dinámico que pegue el resultado desde la fila2 hasta la ultima fila con datos de la hoja resultado. El resultado me lo da solo para la C2 y necesito modificarlo para que sea en un rando dinámico. Gracias.

Si, por eso te lo mencioné ... ya parecía raro que siempre fuera en C2 pero así es como lo habías indicado.

Bien, entonces utiliza una variable que se incremente cada vez que se envía un resultado a la hoja6. De Hoja4 no mencionas nada por lo que queda fija en E7.

Sub consulta()
Dim final As Long, x6 as Long
Dim x As Long
Dim ho4, ho6
'declaramos las otras hojas
Set ho4 = Sheets("Hoja4")        
Set ho6 = Sheets("Hoja6") : x6 = 2  '1ra fila en hojas 6
final = Range("A65536").End(xlUp).Row
For x = 2 To final
    Cells(x, 2) = Mid(Cells(x, 1), 1, 2)      'coloca en col B los 2 dígitos
    If Cells(x, 2) > 9 And Cells(x, 2) < 13 Then
        ho6.range("C" & x6) = ho4.[E7] : x6 = x6+1
    ElseIf Cells(x, 2) > 20 And Cells(x, 2) < 24 Then
        ho6.range("C" & x6) = ho4.[E7] * -1 :x6 = x6+1
    End If
Next
End Sub

Sdos !

¡Gracias!

Seguía con la celda fija pero ya le cambie la variable y corrió perfecto.

Quizás no copiaste la instrucción completa:

ho6.range("C" & x6) = ho4.[E7] : x6 = x6+1

Allí hay 2 instrucciones separadas con los 2 puntos:

ho6.range("C" & x6) = ho4.[E7]
x6 = x6+1

Perdone la moslestia, ya cerré la pregunta pero estoy haciendo pruebas y no me corre correctamente, no me da error pero me sale así:

Monto Extraer Resultado incorrecto 
-1,000.00 10 -1000 
-2,000.00 10 -2000 
3,000.00 10 3000 
-4,000.00 16 4000 
-5,000.00 16 5000 
-6,000.00 16 6000 
-7,000.00 16 7000 
-8,000.00 20 8000 
-9,000.00 20 9000 
-10,000.00 10 -10000 
11,000.00 15 -16000 NO
12,000.00 15 17000 NO
-13,000.00 15 -18000 NO
-14,000.00 15 FALTA
-15,000.00 15 FALTA
-16,000.00 10 FALTA
-17,000.00 20 FALTA
18,000.00 30 FALTA
Códigos Correcto
10201 -1000
10502 -2000
10401 3000
16101 4000
16103 5000
16104 6000
16106 7000
20104 8000
20301 9000
10402 -10000
15101 11000
15103 12000
15104 -13000
15106 -14000
15107 -15000
10202 -16000
20107 17000
30105 -18000

y no se como corregirlo, Gracias por su ayuda

Las macros se entregan probadas según lo solicitado. Evidentemente hay algo en tus datos que no coincide con el ejemplo que dejaste. Por lo tanto necesitaré me envíes tu hoja para ajustarla a tu modelo REAL.

Mis correos aparecen en la portada de mi sitio:

http://aplicaexcel.com/index.htm

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas