¿Cómo escribir código EXCEL VBA?
Primero, método de circulación general
Subperíodo ()
Dim j As Long
Dim j As Long
Atenuar mientras MaxCnt
Atenuar arreglo como variable
Atenuar celdas como rango
Para cada celda en el rango ("G9:G13")
arr = aplicación. Transponer(Apply.Transpose(Cell.Resize(1, 8)))
Celda(Cell.Row, "C"). Borrar
Para i = LBound(arr) a UBound(arr)
MaxCnt = 0
Para j = i a UBound(arr)
Si arr(j)>entonces 0
MaxCnt = MaxCnt 1
Otro
es...Salir
terminará si...
Siguiente j
Celda(celda. fila, "C") = aplicar. Max(MaxCnt, Cells(Cell. Row, "C"))
Siguiente yo
Siguiente celda
Conector final
2 Método recursivo
Submigración()
Atenuar la celda como un rango
Para cada celda del rango ("G9: G13")
.Celda(celda. fila, "C"). claro
Llamar recursivo(cell.resize(1, 8))
Luego
end-joiner
subrecursivo (Rng como rango )
Atenuar Cntius mientras
Atenuar arr como variable
Atenuar i mientras
Si Rng. luego cuenta = 1
arr = Array(Rng. value)
otro
arr = aplicación. Transponer(Apply.Transpose(Rng))
Finalizar si...
Para i = LBound(arr) a UBound(arr)
Si arr( I) lt; gt then 0
Cntius = Cntius 1
Otro
Salir para...
Si... entonces terminará
Entonces
Celda(Rng. fila, "C") = aplicar. max(Cntius, cell(Rng. fila, "C"))
if Rng. Cuente gt y luego 1
Rng recursivo. desplazamiento (0,1). resize(1, Rng.Number of columns - 1)
Terminará si...
Finalizar conector
Captura de pantalla de dos personas corriendo
No lo he probado con cientos de miles de filas de datos, así que no sé cuál es más rápido.