2012-04-21 25 views
7

¿Cómo uso VBA en Excel para verificar si una celda de abajo está vacía o no? Quiero sumar todos los valores en un rango específico, pero solo si la celda siguiente no está vacía.Uso de VBA para verificar si la celda siguiente está vacía

¿Es de alguna manera posible con VBA o de otra manera?

Ejemplo:

4 2 3 2 1 
2 3 1 

Sum sería: 4 + 3 + 2 = 9.

Respuesta

4

recomendaría una fórmula para este

FORMULA

=SUMPRODUCT((A1:E1)*(A2:E2<>"")) 

INSTANTÁNEAS

enter image description here

Si aún desea VBA entonces

VBA

Option Explicit 

Sub Sample() 
    Dim rng As Range 
    Dim Cl As Range 
    Dim tot As Long 

    Set rng = Range("A1:F1") 

    For Each Cl In rng 
     If Len(Trim(Cl.Offset(1))) <> 0 Then tot = tot + Cl.Value 
    Next 

    Debug.Print tot 
End Sub 

De hecho, usted puede tener muchas versiones en VBA. También puedes evaluar la fórmula anterior. Por ejemplo

Option Explicit 

Sub Sample() 
    Debug.Print Evaluate("=SUMPRODUCT((A1:E1)*(A2:E2<>""""))") 
End Sub 
+0

@Siddarth Rout, muy buen enfoque. – Marc

+0

¡Agradable! ¿Le importaría elaborar en esta parte: '<> ""'? – cherrun

+1

@Cherrun: "<>" significa 'No igual a'. Así que simplemente estoy teniendo en cuenta las celdas que no están vacías en el rango A2: E2. –

9

probar este código simple

If IsEmpty(ActiveCell.Offset(1, 0)) Then 
'your code here 
End If 
1

que he tenido algunos problemas usando sólo 'IsEmpty' cuando los datos se exporta desde otras bases de datos. Esta es la función que he desarrollado:

Function IsVacant(TheVar As Variant) As Boolean 
    'LeandraG 2010 

    IsVacant = False 

    If IsEmpty(TheVar) Then IsVacant = True 
    If Trim(TheVar) = "" Then IsVacant = True 
    If Trim(TheVar) = "'" Then IsVacant = True 


End Function 
Cuestiones relacionadas