Sumar solo los nº precedidos de una letra

Quiero que sumar en una celda todos los nº precedidos de una letra que estén en un rango de celdas
{"lat":42.5328442817131,"lng":-1.658935546875}

2 Respuestas

Respuesta
1
Function sumar_letra(Rango, letra)
    For Each Item In Rango
        If (Left(Item, 1) = letra) Then
            sumar_letra = sumar_letra + CDbl(Right(Item, Len(Item) - 1))
        End If
    Next Item
End Function
Hola experto.
Me podrías concretar la respuesta con este ejemplo.
Tengo un calendario que comprende las celdas de la b4 hasta la h5 entonces anoto las horas en el las trabajadas las vacaciones etc .entonces quiero que en una celda me sume unas horas que vayan con una letra y en otras otras horas que vayan con otra letra en mi caso las letras c, v.
Gracias
Como yo te lo he puesto no serviría. ¿Me puedes poner un ejemplo de como está escrito?
Algo como c01:¿20? ¿O algo así?
Yo, las apunto así 8f quiere decir que son 8horas festivas, 5s quiere decir 5horas hechas un sábado. 8n ocho horas de noche etc..
Pues aquí está la función
Public Function sumar_horas(Tipo_de_Horas As String, Rango_Horas As Range) As Double
    sumar_horas = 0
    'Por cada valor en el rango
    For Each Item In Rango_Horas
    'Si la celda contiene el tipo de horas que quieres
        If (Right(Item, 1) = Tipo_de_Horas) Then
    'Suma la parte numérica de la celda
            sumar_horas = sumar_horas + Mid(Item, 1, Len(Item) - 1)
        End If
    Next Item
End Function
Un ejemplo de la función es si quieres poner las festivas has de poner "f", entre comillas porque si no no te lo va a coger.
La función la puedes usar desde la barra de funciones, no necesitas un botón o algo parecido
Hola experto no entiendo donde tengo que poner la "f" en el caso de las festivas me podrías dar la función entera con las festivas así con las otras no tendría más que cambiar la "f" por las otras letras.
Gracias
He supuesto que tendrías algo como esto
     A D E
1 f5 f
2 v7 v
3 s8 s
Suponiendo que tienes esto en E1 pondrías suma_horas($D1;A$1:A$3)
Mira el ejemplo real seria
      A B C D E F G H
1    8f     8C    8     8       8     4     4C    5
2 4 5 6C 7 7F 4 7 8C
3 8 8 8 8 8 8C 8 8
4 8C 8V 8 8 8 8F 8 8
5    8V    8F      8C   8C     8      8     8     8
querria que en la celda A20 me sumara todas las horas c
en la celda A21 me sumara todas las horas f
en la celda  A22 me sumara todas las horas v
La fórmula ha cambiado
Public Function sumar_horas(Tipo_de_Horas As String, Rango_Horas As Range) As Double
    sumar_horas = 0
    'Por cada valor en el rango
    For Each Item In Rango_Horas
    'Si la celda contiene el tipo de horas que quieres
        If (Right(Item, 1) = LCase(Tipo_de_Horas)) Then
    'Suma la parte numérica de la celda
            sumar_horas = sumar_horas + Mid(Item, 1, Len(Item) - 1)
        End If
    Next Item
End Function
Has de poner sumar_horas("c";A1:A8) o sumar_horas("C";A1:A8), no importa, en la barra de fórmulas
me pones . sumar_horas("c";a1:a8) es que yo no especifico que son horas si no que solo pongo un valor por ejemplo 8f entonces si pongo horas no sabe los valores que tiene que sumar.
Yo he supuesto que eran horas, te va a sumar los que tengan una f al final y ya está.
Lo he hecho así y no me da ningún resultado
A mi me da bien. Lo he puesto así ??=sumar_horas($A7;$A$1:$H$5)
En A7 tengo f
En A8 tengo c
En la celda a7 pongo f.
En la celda a8 pongo c.
Y en la celda a10 he copiado la fórmula que me dices le doy a enter y me pone #¿NOMBRE?
No se que es lo que hago mal
¿Has puesto la fórmula en un módulo? Así es como aparecen, no la pongas en la página, ponla en un módulo aparte.
No entiendo lo que me quieres decir, que lo ponga en un modulo aparte.
Yo lo pongo tal y como esta, en la barra de tareas donde pone la fx
Has de ponerlo en un módulo porque si no no te coge las fórmulas en la barra fx.
Si le das a fx, ¿Te sale un apartado que te pone Definidas por el usuario?
Si no es así es que has de crear un módulo. Te explico como hacerlo.
En la barra que hay con botones, al principio solo está el botón de guardar y arriba del todo.
Al final de la barra hay un triángulo negro invertido hacia abajo con un guión arriba, lo apretás. Le das donde pone Más comandos.
Hay una lista desplegabla que pone Comandos más utilizados. Desplegás la lista y le das a donde pone Ficha Programador. Salen varios botones.
El penúltimo por debajo pone Visual Basic, lo señalas y le das a botón agregar. Le das a aceptar.
Apretás el botón del Visual Basic.
A la izquierda arriba pone Proyecto, pondrá Microsoft Excel Objetos, te saldrán las hojas que tienes en el libro.
Una vez aquí para insertar un módulo apretás el botón derecho y hay una opción que pone Insertar con una flecha a la derecha, señalas el módulo
Una vez has insertado el módulo te crea una carpeta de módulos y un módulo que se llama Módulo 1, te meterá directamente dentro del módulo.
Aquí es donde has de insertar la fórmula que te pasé.
Cuando la hayas insertado, te vas a la barra de fórmulas y te aparecerá una parte que pone Definidas por el usuario y te saldrá esta función.
O si no directamente la escribes en la barra de fórmulas y te saldrá directamente.
Por fin he metido la fórmula y me funciona.
Gracias por haberme enseñado a meter fórmulas ya que yo no sabia, más que operar con las fórmulas que tiene excel . también por tu paciencia y amabilidad.
Gracias, gracias, gracias, hasta siempre antares18 de un amigo navarrico
Respuesta
1
Necesito más información para darte una mejor ayuda, pero de lo que entiendo podrías crear una columna adicional en la que coloques los valores, esto lo haría una fórmula, según lo que indicas siempre es una letra la que precede al número, por lo que la fórmula sería
=VALOR(EXTRAE(D2;2;LARGO(D2)-1))
Te explico un poco la fórmula, desde dentro hacia afuera:
1) Mido el número de caracteres que tiene la celda y lo resto menos 1 ya que ese carácter corresponde a la letra
2) Extraigo todos los caracteres desde el segundo hasta el final de los caracteres de la celda
3) Dado que las operaciones anteriores son de Texto no podrías sumar esos valores, por lo que la fórmula "Valor" los convierte en número
Si esto te sirvió no olvides de finalizar la pregunta
Hola experto .
Agradezco tu respuesta pero quizás si me lo explicaras con un ejemplo real lo podría entender.
Muchas gracias por tu amabilidad
Supongamos que en la columna A tienes los siguientes valores
A2= Z500
A3=60
A4=Z75
A5=55
En la columna B incluirias la siguiente formula:
B2=valor(SI(ESERROR(VALOR(A2))=VERDADERO;EXTRAE(A2;2;LARGO(A2)-1);0))
B3=valor(SI(ESERROR(VALOR(A3))=VERDADERO;EXTRAE(A3;2;LARGO(A3)-1);0))
B4=valor(SI(ESERROR(VALOR(A4))=VERDADERO;EXTRAE(A4;2;LARGO(A4)-1);0))
B5=valor(SI(ESERROR(VALOR(A5))=VERDADERO;EXTRAE(A5;2;LARGO(A5)-1);0))
Esta fórmula convierte esos valores que empiezan en una letra en un número y todo lo que no comienza con una letra lo deja con valor cero, es decir si sumas la columna B, obtendrás la suma de todos los valores que empezaron con una letra.
El resultado de la suma según el ejemplo que te pongo es de 575
C2=SUMA(B2:B5)      -------->575
Hola experto, feliz año nuevo.
Seria muy complicado que en el ejemplo anterior me diera el resultado directamente en la celda c2 sin tener que utilizar las celdas b2 b3 b4 b5, ya que en mi caso quisiera hacer operaciones con varias letras y tendría que utilizar muchas celdas para llegar al resultado final.
Mi caso es un calendario laboral en el cual anoto las horas de trabajo las vacaciones las horas nocturnas etc.
Muchas gracias, mi más sincero agradecimiento
Bueno te comento que no tienes que digitar celda por celda, si no que digitas la primera celda en B2 y copias hacia abajo hasta las fila que necesites.
Para hacer esto sin la columna B, si no que automáticamente salga en la celda C, habría que personalizar una fórmula, pero la verdad eso lleva un poco de tiempo. Voy a tratar de hacerlo pero en eso no tengo mucha experiencia.
Sugiero que finalices esta pregunta y realices otra con más especificaciones, incluyendo el hecho de que en una sola celda necesitas la respuesta.
Si termino yo la solución contestare tu nueva pregunta, pero también lo puede hacer otro usuario antes que yo, por eso la recomendación de que finalices esta pregunta y realices una nueva con todas las especificaciones.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas