Sumar rangos de números
La pregunta es como se suman números dentro de un rango, que código se escribe.
1 respuesta
Respuesta
1
1
Anónimo
Para lo que quieres realizar se debe crear una operación muy simple la cual te escribo más abajo:
______________________________________________________________________
Dim Caracter As String
Dim guarda As Integer
Dim i As Integer
Private Sub Command1_Click()
guarda = 0
For i = 1 To Len(Me.Text1.Text)
Caracter = Mid(Me.Text1.Text, i, 1)
If IsNumeric(Caracter) Then
guarda = guarda + CLng(Caracter)
End If
Next
MsgBox "La suma es " & guarda
End Sub
______________________________________________________________________
Bue te explico un poco como funciona creamos una variable del tipo String la cual es Carácter esta guarda cada uno de los caracteres leídos del TextBox y en el if preguntamos si el carácter guardado es un numero si esto es así realizamos la suma la cual se va guardando en la variable del tipo Integer que guardar, ahora para ir leyendo cada uno de los caracteres del TextBox lo hacemos con un for que va de i = 1 hasta el total de caracteres del TextBox el numero de caracteres de este lo sabemos gracias a la función "Len" un a ves ya dentro del for utilizamos la función Mid() la cual toma el texto guardado en el TextBox pero lo va recorriendo según el ciclo que lleva el for por eso se pone Mid(Text1.text, i, 1) y va entregándole el valor del carácter leído a la variable Carácter.
______________________________________________________________________
Dim Caracter As String
Dim guarda As Integer
Dim i As Integer
Private Sub Command1_Click()
guarda = 0
For i = 1 To Len(Me.Text1.Text)
Caracter = Mid(Me.Text1.Text, i, 1)
If IsNumeric(Caracter) Then
guarda = guarda + CLng(Caracter)
End If
Next
MsgBox "La suma es " & guarda
End Sub
______________________________________________________________________
Bue te explico un poco como funciona creamos una variable del tipo String la cual es Carácter esta guarda cada uno de los caracteres leídos del TextBox y en el if preguntamos si el carácter guardado es un numero si esto es así realizamos la suma la cual se va guardando en la variable del tipo Integer que guardar, ahora para ir leyendo cada uno de los caracteres del TextBox lo hacemos con un for que va de i = 1 hasta el total de caracteres del TextBox el numero de caracteres de este lo sabemos gracias a la función "Len" un a ves ya dentro del for utilizamos la función Mid() la cual toma el texto guardado en el TextBox pero lo va recorriendo según el ciclo que lleva el for por eso se pone Mid(Text1.text, i, 1) y va entregándole el valor del carácter leído a la variable Carácter.
Hola, muchas gracias por la respuesta, pero estoy empezando a utilizar este programa y no se muy bien todavía, quisiera saber si ese código me sirve para lo siguiente, necesito sumar números que hay en un rango determinado, que es resultado de una operación que ya programe, por ejemplo el rango queda así (1--3--5--7--9--) entonces necesito sumar este rango para que quede suma=(25).
Le agradecería mucho su ayuda nuevamente.
Le agradecería mucho su ayuda nuevamente.
Por lo que entiendo de lo que pides, el código que te presente justamente sirve para realizar la suma dentro del rango (1--3--5--7--9--) como también puede ser un rango así (1.. 3.. 5.. 7.. 9..) o (1,, 3,, 5,, 7,, 9,,) en todo caso no importa que caracteres estén entre medio de los números ya que el código presentado verifica que el carácter sea un numero ya que si este no es numero no lo toma en cuenta, pero si este es numero va sumando los valores.
Ahora el rango se lo puedes entregar por medio de una variable no necesariamente tiene que ser por medio de un TextBox.
Cualquier duda me dices.
Ahora el rango se lo puedes entregar por medio de una variable no necesariamente tiene que ser por medio de un TextBox.
Cualquier duda me dices.
Hola, nuevamente yo molestando de nuevo; aquí te adjunto mi ejercicio:
Dim LI As Integer, LS As Integer, i As Integer, caracter As String, guarda As Integer
LI = Val(txtli)
LS = Val(txtls)
For i = LI To LS
If i Mod 2 <> 0 Then
txtImp = txtImp & "--" & i ^ 2
End If
Next i
guarda = 0
For i = 1 To Len(txtImp)
caracter = Mid(txtImp, i, 1)
If IsNumeric(caracter) Then
guarda = guarda + CLng(caracter)
End If
Next
MsgBox "La suma es " & guarda
End Sub
siguiendo el ejemplo que me diste escribi ese codigo;
Debía sacar el cuadrado de los números impares que hay entre el rango LI(1) y LS(50) en un textbox, esto lo hago por medio de la operación en
txtimp= txtImp & "--" & i ^ 2
Ahora debo sumar lo que hay en txtimp;
utilizando tu codigo, me dio 305, siendo LI=1 y LS=50.
Finalmente, si fueras tan amable y gentil de revisarme el código y decirme que me hace falta, te estaría muy agradecida y no te molesto más.
Por Favor; que pena molestarte tanto, es que e intentado todo y no me quiere salir. Muchísimas gracias
Dim LI As Integer, LS As Integer, i As Integer, caracter As String, guarda As Integer
LI = Val(txtli)
LS = Val(txtls)
For i = LI To LS
If i Mod 2 <> 0 Then
txtImp = txtImp & "--" & i ^ 2
End If
Next i
guarda = 0
For i = 1 To Len(txtImp)
caracter = Mid(txtImp, i, 1)
If IsNumeric(caracter) Then
guarda = guarda + CLng(caracter)
End If
Next
MsgBox "La suma es " & guarda
End Sub
siguiendo el ejemplo que me diste escribi ese codigo;
Debía sacar el cuadrado de los números impares que hay entre el rango LI(1) y LS(50) en un textbox, esto lo hago por medio de la operación en
txtimp= txtImp & "--" & i ^ 2
Ahora debo sumar lo que hay en txtimp;
utilizando tu codigo, me dio 305, siendo LI=1 y LS=50.
Finalmente, si fueras tan amable y gentil de revisarme el código y decirme que me hace falta, te estaría muy agradecida y no te molesto más.
Por Favor; que pena molestarte tanto, es que e intentado todo y no me quiere salir. Muchísimas gracias
Ahora entendí mejor que era lo que querías o más bien entendí que el rango que estas utilizando no era del 1 al 9 ya que como no me habías dicho el calculo que realizabas para tu rango o si me lo dijiste no me di cuenta y te pido disculpas.
Aquí te dejo el código que rebice y modifique rápidamente para que cumpla tus necesidades.
--------------------------------------------------------------------------------
Dim LI As Integer
Dim LS As Integer
Dim i As Integer
Dim caracter As String
Dim guarda As Long
Dim Concatenar As String
Dim GConcatena As Long
Dim paso As Integer
txtImp.Text = ""
paso = 0
LI = Val(txtli)
LS = Val(txtls)
For i = LI To LS
If i Mod 2 <> 0 Then
txtImp = txtImp & "--" & i ^ 2
End If
Next i
guarda = 0
Concatenar = ""
For i = 1 To Len(txtImp.Text)
caracter = Mid(txtImp.Text, i, 1)
If IsNumeric(caracter) Then
Concatenar = Concatenar & caracter
paso = 0
If i = Len(txtImp.Text) Then
GConcatena = Val(Concatenar)
guarda = guarda + CLng(GConcatena)
End If
Else
If paso = 0 Then
paso = 1
GConcatena = Val(Concatenar)
guarda = guarda + CLng(GConcatena)
Concatenar = ""
End If
End If
Next
MsgBox "La suma es " & guarda
------------------------------------------------------------------------------------------------------
Ahora la suma con los valores de LI(1) y LS(50) da 20825 :)
Aquí te dejo el código que rebice y modifique rápidamente para que cumpla tus necesidades.
--------------------------------------------------------------------------------
Dim LI As Integer
Dim LS As Integer
Dim i As Integer
Dim caracter As String
Dim guarda As Long
Dim Concatenar As String
Dim GConcatena As Long
Dim paso As Integer
txtImp.Text = ""
paso = 0
LI = Val(txtli)
LS = Val(txtls)
For i = LI To LS
If i Mod 2 <> 0 Then
txtImp = txtImp & "--" & i ^ 2
End If
Next i
guarda = 0
Concatenar = ""
For i = 1 To Len(txtImp.Text)
caracter = Mid(txtImp.Text, i, 1)
If IsNumeric(caracter) Then
Concatenar = Concatenar & caracter
paso = 0
If i = Len(txtImp.Text) Then
GConcatena = Val(Concatenar)
guarda = guarda + CLng(GConcatena)
End If
Else
If paso = 0 Then
paso = 1
GConcatena = Val(Concatenar)
guarda = guarda + CLng(GConcatena)
Concatenar = ""
End If
End If
Next
MsgBox "La suma es " & guarda
------------------------------------------------------------------------------------------------------
Ahora la suma con los valores de LI(1) y LS(50) da 20825 :)
- Compartir respuesta
- Anónimo
ahora mismo