Macro VBA para contar celdas y concatenar carácter según criterio

Buenas tardes, solicit por favor la ayuda de un experto para que por favor me ayude con la siguiente macro, en el lado izquierdo tengo un rango con datos desde la columna ALN hasta la BXY y seguidamente en la columna BXC tengo unos datos. Con ceros y 1. 

Necesitaría una macro que me de los resultados en la columna BXZ como se muestra en la imagen. Que me cuente cuantos datos hay en el rango de la izquierda Y si en la celda de la columna BXC hay un numero 1. Me agregue un ".00001". Ejemplo:

En primera celda que tiene datos de la columna BXZ dice 6. Osea que la cantidad de celdas con datos en ese rango son 6. Pero no dice nada más porque en esa misma fila de la columna BXC hay un 0.

Pero si nos vamos en la cuarta fiá de la columna BXZ dice 14.0001, eso es porque en la columna BXC hay un 1, entonces por eso debería quedar con esos números o caracteres adicionados.

Aclaro que los datos de los rangos están en formato texto. Los datos que están en la columna BXZ loscoloque a mano, como ejemplo para que así diera el resultado la macro. Ya que la macro debe colocar su resultado en esa columna.

La idea es que haga el calculo de forma automática, osea todas las fiilas de una vez hasta dondetenga datos..

Espero me puedan ayudar, mil y mil gracias,, feliz tarde y quedo atento a cualquier duda por si me he pasado algo por alto

1 respuesta

Respuesta
1

Prueba la siguiente:

Sub BXZ()
  Dim a As Variant
  Dim i As Long
  '
  a = Range("BXZ10", Range("BYC" & Rows.Count).End(3)).Value
  For i = 1 To UBound(a)
    If a(i, 4) = 1 Then a(i, 1) = a(i, 1) & ".00001"
  Next
  Range("BXZ10").Resize(UBound(a)).Value = a
End Sub

[Avísame si tienes dudas. No olvides valorar]

Hola Dante, la formula es un rayo, tarda menos de un segundo en arrojar resultados, excelente por ese lado,, lo unico es que  no esta contando cuantos datos hay en el rango del lado izquierdo,  solamente arroja el valor .00001 si en la celda de la  columna BYC esta el valor 1. te adjunto captura para que veas 

y recuerda que debe de quedar contando la cantidad de caldas que tengan datos en el rango de la izquierda ALN:BXY y   si en la celda BYC esta el valor 1, concatene seguidamente el valor .00001 tal cual como esta en la primer captura de la pregunta debe dar el resultado. mil gracias :)

No entendí que también había que contar.

Te paso el código corregido para contar. Va a tardar un par de segundos:

Sub BXZ()
  Dim a As Variant
  Dim i As Long, j As Long, lr As Long, n As Long
  '
  lr = Range("ALN" & Rows.Count).End(3).Row
  a = Range("ALN10:BYC" & lr).Value
  For i = 1 To UBound(a)
    n = 0
    For j = 1 To 1000
      If a(i, j) <> "" Then n = n + 1
    Next
    If a(i, 1004) = 1 Then
      a(i, 1001) = n & ".00001"
    Else
      a(i, 1001) = n
    End If
  Next
  Range("BXZ10").Resize(UBound(a)).Value = Application.Index(a, , 1001)
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas