Buen día, estoy realizando una macro que me cuente según sean dos condiciones

Primero separe la cadena de cada celda con la función Split, después recorro cada palabra con 3 for, lo que necesito es que me cuente cada vez que la variable 1 es "IDLE" y la variable 2 es diferente a "4G", necesito que me las cuente en cada fila y me ponga la cantidad en una columna esto es lo que llevo del código

Sub tretorno()
Dim celda As Range
Dim n As Integer
Dim palabras() As String
Dim separador As String
Dim texto As String
separador = "/"
Set cell = Worksheets("Hoja1").Cells.Find("Parametro") 'busca name
indCol = cell.Column
NumColums = Sheets("Hoja1").Cells(2, Cells.Columns.Count).End(xlToLeft).Column
NumFilas = Application.CountA(Sheets("Hoja1").Range("A:A"))
Range("U2", Cells(NumFilas, 160)).Select
For Each celda In Selection
texto = celda.Value
palabras = Split(texto, separador)
n = UBound(palabras)
For i = 0 To n
variable1 = palabras(i)
i = i + 2
Next i

For j = 1 To n
variable2 = palabras(j)
j = j + 2
Next j

For k = 2 To n
variable2 = palabras(k)
j = k + 2
Next a
Next celda

https://drive.google.com/file/d/1_Lu_rL6ZcFM2W58OVZGEvEjb_PILWCU5/view?usp=sharing 

1 Respuesta

Respuesta

Prueba con esta macro, primero cuenta todas las celdas que contenga IDLE y luego las que contengan IDLE/4G, luego quita efectúa una resta dejando solo la cantidad de celdas que contienen IDLE sin G4.

Sub contar_filas()
Set DATOS = Range("a1").CurrentRegion
 With DATOS
    col = Range("u1").Column:   c = .Columns.Count: r = .Rows.Count
    Set DATOS = .Columns(col).Resize(r, c - col + 1)
    With WorksheetFunction
        CUENTA2 = .CountIf(DATOS, "*IDLE*")
        CUENTA3 = .CountIf(DATOS, "*IDLE/4G*")
    End With
    DIF = CUENTA2 - CUENTA3
    MsgBox ("EXISTEN " & DIF & " REGISTROS IDLE"), vbInformation, "AVISO"
 End With
End Sub

se puede hacer la cuenta por cada fila

Esta es la macro por filas

Sub contar_filas()
Set datos = Range("a1").CurrentRegion
 With datos
    col = Range("u1").Column:   c = .Columns.Count: r = .Rows.Count
    Set datos = .Columns(col).Resize(r, c - col + 1)
    c = .Columns.Count: r = .Rows.Count
    .Columns(c + 2).ClearContents
    For i = 2 To r
        With WorksheetFunction
        cuenta2 = .CountIf(datos.Rows(i), "*IDLE*")
        cuenta3 = .CountIf(datos.Rows(i), "*IDLE/4G*")
    End With
    dif = cuenta2 - cuenta3
    .Cells(i, c + 2) = dif
    Next i
 End With
 Set datos = Nothing
End Sub

el resultado aparecera en la columna cd

Mucha gracias funciona perfectamente, tengo otra pregunta se puede hacer que haga el conteo a partir de la celda que contiene OFF_HOOK

solo cambia esta linea col = Range("u1").Column por esta col = Range("v1").Column y listo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas