Red de conocimiento informático - Material del sitio web - ¿Cómo generar directamente la salida de la fórmula mediante el código VB como visualización del valor del resultado?

¿Cómo generar directamente la salida de la fórmula mediante el código VB como visualización del valor del resultado?

1. El método para convertir una fórmula en un valor numérico es comprender la lógica de la fórmula y utilizar declaraciones VBA para implementar la operación de la fórmula, como la primera declaración:

Hoja2.Celdas(a, 4).FormulaR1C1 = "=IF(LEN(RC[-1])>=2,","válido"",""inválido"")"

El La modificación para usar VBA es:

p>

Si Len(Sheet2.Cells(a, 3))>=2 Then Sheet2.Cells(a, 4) = "válido" De lo contrario Sheet2.Cells(a, 4)="invalid"

2. Después de las modificaciones anteriores, el código seguirá siendo muy lento y la velocidad no ha mejorado. Porque cada vez que modifica la fórmula de una celda + el cálculo de la fórmula, el tiempo es casi el mismo que cada vez que establece el valor de la celda. Todos se desperdician al acceder a las celdas. La solución es usar una matriz para recuperar todo el contenido de la tabla. a la vez en la matriz y escríbalo nuevamente en la hoja de trabajo inmediatamente después de que se complete la operación en la matriz. La lógica aproximada es:

Sub x()

Atenuar a. Como entero, arr2

arr2 = Sheet2.UsedRange 'Extrae contenido de una vez

Para a = 3 a UBound(arr)

Si arr(a, 1) <> "" Entonces

arr(a, 3) = IIf(Len(arr(a, 3)) >= 2, "válido", "inválido")

arr(a, 5) = IIf( InStr(arr(a, 3), "?") > 0 O InStr(arr(a, 3), "0") > 0, "No válido", "Válido")

arr(a , 6) = IIf(Len(arr(a, 4)) <> LenB(ar(ar, 4)), "chino", "inglés")

arr(a, 7) = IIf (InStr(arr(a, 3), " ") > 0, "no válido", "válido")

arr(a, 8) = arr( a, 6) & arr(a, 7 )

End If

Siguiente a

Sheet2.UsedRange = arr 'Hoja de trabajo de reescritura única

Fin del subtítulo