Realizar suma en dos columna y detenerse cuando encuentre un texto, por ejemplo "sin dato"

Hola experto, encontré un código que alguien ya había solicitado en su pagina:

Sub GeneraSumas()  
    Dim sRango As String  
    Range("H13").Select 'Seleccionamos la primera celda de la columna  
    Range(Selection, Selection.End(xlDown)).Select ' Seleccionamos todas las celdas con datos  
    sRango = Selection.Address 'Obtenemos el rango de celdas  
    Range("I10").Formula = "=SUM(" & sRango & ")" 'Construimos la nueva fórmula  
    'Repetimos el proceso para la otra columna  
    sRango = Replace(sRango,"H","F")  
    Range("I11").Formula = "=SUM(" & sRango & ")"  
    Range("I12").Select  
End Sub

Me realiza perfectamente la suma de las dos columnas, pero esta macro se detiene hasta que  no hay valor (formula); y lo que necesito es que se detenga la selección al encontrar el texto "sin dato".

Ya le coloque una condicionante a la celda en mi archivo para que me pusiera "sin dato" cuando el valor es cero, pero al final de cuentas no se detuvo ya que tiene un valor o formula y continua la suma; y no puedo eliminar los vínculos de las celdas que siguen.

Al código en la parte de arriba solo lo adecue mis columnas (C Y L), Aquí incluyo una tabla como la que estoy utilizando. La columna "C", no utiliza el texto "sin dato", esta columna siempre tiene valor durante todo el mes, la única que utilizaría el texto "sin dato" es la columna "L" ya que es la columna que va teniendo valor con el pasos de los días..
            B                               C                                 L
1 01.01.2012               15559.9148                  3019.4300
2 02.01.2012               15559.9148                12291.6860
. . .
. . .
26 26.01.2012              15559.9148                14532.2364
27 27.01.2012              15559.9148                  SIN DATO
28 28.01.2012              15559.9148                  SIN DATO
29 29.01.2012               15559.9148                 SIN DATO


Lo que busco es que sume desde L1 hasta L26, ya que en L27 aparecerá "sin dato" y coloque la sumatoria en L80;
Además sume desde C1 hasta C26, ya que como en L26 aparece "sin dato" detiene la suma y coloca la sumatoria en C80.


Podrían apoyarme en esta macro, agradezco de antemano su atención y su valioso tiempo.

Saludos y gracias.

Respuesta
1

Prueba este otro enfoque:

Sub misuma()
Dim t As Double
Dim r As Range
'4c7569735f50
On Local Error GoTo err:
t = 0
For Each r In Range("L:L")
If UCase(r) = "SIN DATO" Then Exit For
t = t + (r + r.Offset(0, -9))
DoEvents
Next
[c80] = t
Set r = Nothing
err:
If err.Number = 13 Then MsgBox "existe un dato no nmumerico en rango de suma", vbCritical
If err.Number = 0 Then MsgBox "terminado", vbInformation
End Sub

Ya lo probé y si funciona, solo que podrías ayudarme a que en C80 me de el total de la columna C y en L80 el de la columna L???

Saludos y gracias

Ok. Pensé que deseabas la suma de ambas columnas en c80

Pero ok. Acá te va como lo deseas.

Sub misuma()
Dim t As Double
Dim r As Range
Dim es As Double
'4c7569735f50
On Local Error GoTo err:
t = 0
For Each r In Range("L:L")
If UCase(r) = "SIN DATO" Then Exit For
t = t + (r)
es = es + (r.Offset(0, -9))
DoEvents
Next
[c80] = es
[l80] = t
Set r = Nothing
err:
If err.Number = 13 Then MsgBox "existe un dato no nmumerico en rango de suma", vbCritical
If err.Number = 0 Then MsgBox "terminado", vbInformation
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas