Problema calcular celda

13/06/2005 - 23:03 por Carlos A. Fajardo C. | Informe spam
Que tal grupo, tengo el siguiente problema:
Resulta que en una celda tengo un dato de texto, que va acompañado de
números (con el simbolo $); en cada celda puede haber 2 o tres números co su
respectivo texto. Pero necesito multiplicar los números por una celda (que
tiene determinado valor). Será eso posible? me imagíno que con todas las
funciones de excel debe haber alguna. De antemano a todos muchas gracias por
su colaboració.

Carlos Fajardo

Preguntas similare

Leer las respuestas

#6 Carlos A. Fajardo C.
15/06/2005 - 20:53 | Informe spam
Gracias Hector:

Le voy a especificar como va cada una de las celdas:

Celda A1: Rapel $ 3.500 Rapel $ 8.000 Rapel $ Rapel $ 7.500 (En esta celda
los puntos que separan los números los coloco manualmente)
Celda B1: 120.000 (El formato en esta celda es de número)
Celda C1: 120.000-3.500-8.000-7.500 (En esta celda quiero el resultado de la
operación)
Como puede ver los datos numéricos de A1 hay que sacarlos para restarlos
para restarselos a B1; pero sin utilizar mas columnas.

Si necesitas mas datos me avisas.

Gracias Carlos


From: "Héctor Miguel"
Newsgroups: microsoft.public.es.excel
Sent: Tuesday, June 14, 2005 10:46 PM
Subject: Re: Problema calcular celda



hola, Carlos !

> ... el problema como lo entendiste si es, la solucion no es exactamente,


por dos razones:
> ... las celdas en donde se encuentran los datos es combinada,
> ... realizo el proceso... se divide en columnas y asi no me sirve.
> ... la idea es tratar de calcular los datos tal y como estan dentro de


la celda.

necesitaras proporcionar datos/ejemplos/... mas


'concretos'/especificos/detallados/... :) [p.e.]
- en cual/es celda/s viene una [o mas] combinacion/es de texto y numeros ?
- en dicha/s celda/s el dato es 'entrada directa' del usuario ? [o es


alguna formula] ?
- cual/es es/son el/los valor/es que necesitas 'rescatar' para multiplicar


? [y cuantos pudiera haber] ?
- cual podria ser un caracter [+/- 'infalible'] para 'detectar' donde


inicia cada secuencia numerica ?
- en donde [y como] vas a necesitar 'el resultado' de cada una de las


multiplicaciones ?
- en cual celda esta el 'factor' por el que se debe multiplicar cada


'valor_rescatado' de la/s celda/s texto_numero ?

- [creo que] tu lo tienes frente a ti... pero con los datos que has


comentado hasta ahora... :-((
que y como estas haciendo actualmente para 'salir del problema' ?

saludos,
hector.

p.d. [para mi] las celdas 'combinadas' deberian utilizarse [solo] para


encabezados, titulares o 'similares'
y 'nunca' para combinar celdas en rangos de datos que tengan


formulas/funciones/... de uso 'posterior'
observa que desde la 'simple navegacion' por la hoja... las celda


combinadas... 'estorban' [aun por codigo] :-\
Respuesta Responder a este mensaje
#7 Héctor Miguel
16/06/2005 - 08:19 | Informe spam
hola, Carlos !

... como va cada una de las celdas:
Celda A1: Rapel $ 3.500 Rapel $ 8.000 Rapel $ Rapel $ 7.500 (... los puntos que separan los numeros los coloco manualmente)
Celda B1: 120.000 (El formato en esta celda es de numero)
Celda C1: 120.000-3.500-8.000-7.500 (En esta celda quiero el resultado de la operacion)
... los datos numericos de A1 hay que sacarlos... para restarselos a B1; pero sin utilizar mas columnas.



como 'pintas' la situacion... [creo que] sera mas 'conveniente' el uso de funciones 'personalizadas'
[aunque...] tratandose de varias [quiza 'demasiadas'] celdas donde sera empleada... el 'rendimiento del modelo'... :-((
== pega las siguientes lineas en un modulo de codigo 'normal' =Function SustraerDeTexto(Valor As Double, Texto As Range) As Double
Dim Lineas, Linea As Byte, Pos As Byte, Nuevo As String, Total As Double
Lineas = Split(Texto)
For Linea = LBound(Lineas) To UBound(Lineas)
Nuevo = ""
For Pos = 1 To Len(Lineas(Linea))
Select Case Mid(Lineas(Linea), Pos, 1)
Case 0 To 9, Application.International(xlDecimalSeparator)
Nuevo = Nuevo & Mid(Lineas(Linea), Pos, 1)
End Select
Next
Total = Total + Val(Nuevo)
Next
SustraerDeTexto = Valor - Total
End Function

y la funcion anterior la puedes utilizar [p.e.] en 'C1' de la siguiente manera: =SustraerDeTexto(B1;A1)
=> requiere excel 2000 en adelante [por la funcion 'Split'] y -probablemente- habra cosas que modificar -?-
comentas?
saludos,
hector.
Respuesta Responder a este mensaje
#8 Carlos A. Fajardo C.
17/06/2005 - 16:32 | Informe spam
Hombre Hector que pena que me he demorado mucho en responder, pero la verdad
es que yo soy un usuario final medio avanzado, tengo mucha empatía con todo
lo que tiene que ver con los sistemas de computadores, y cualquier cosa que
me expliquen la entiendo; pero en excel nunca me he metido en la parte de
programación ni de las macros, como tampoco a personalizar las funciones.
Asi que para no hablar mas cháchara le comento que no se como ni en donde
pegar las lineas que me enviaste en un modulo de codigo normal. Si medio me
explicas creo que puedo hacerlo.

Hector muchas gracias por su paciencia y por compartir sus conocimientos.

Cordialmente,

Carlos Fajardo


"Héctor Miguel" escribió en el mensaje
news:

hola, Carlos !

> ... como va cada una de las celdas:
> Celda A1: Rapel $ 3.500 Rapel $ 8.000 Rapel $ Rapel $ 7.500 (... los


puntos que separan los numeros los coloco manualmente)
> Celda B1: 120.000 (El formato en esta celda es de numero)
> Celda C1: 120.000-3.500-8.000-7.500 (En esta celda quiero el resultado


de la operacion)
> ... los datos numericos de A1 hay que sacarlos... para restarselos a B1;


pero sin utilizar mas columnas.

como 'pintas' la situacion... [creo que] sera mas 'conveniente' el uso de


funciones 'personalizadas'
[aunque...] tratandose de varias [quiza 'demasiadas'] celdas donde sera


empleada... el 'rendimiento del modelo'... :-((
== pega las siguientes lineas en un modulo de codigo 'normal' => Function SustraerDeTexto(Valor As Double, Texto As Range) As Double
Dim Lineas, Linea As Byte, Pos As Byte, Nuevo As String, Total As Double
Lineas = Split(Texto)
For Linea = LBound(Lineas) To UBound(Lineas)
Nuevo = ""
For Pos = 1 To Len(Lineas(Linea))
Select Case Mid(Lineas(Linea), Pos, 1)
Case 0 To 9, Application.International(xlDecimalSeparator)
Nuevo = Nuevo & Mid(Lineas(Linea), Pos, 1)
End Select
Next
Total = Total + Val(Nuevo)
Next
SustraerDeTexto = Valor - Total
End Function

y la funcion anterior la puedes utilizar [p.e.] en 'C1' de la siguiente


manera: =SustraerDeTexto(B1;A1)
=> requiere excel 2000 en adelante [por la funcion 'Split']


y -probablemente- habra cosas que modificar -?-
comentas?
saludos,
hector.



Respuesta Responder a este mensaje
#9 Héctor Miguel
18/06/2005 - 03:05 | Informe spam
hola, Carlos !

... soy un usuario final... nunca me he metido en... programacion ni... macros
... no se como ni en donde pegar las lineas... en un modulo de codigo normal
... si medio me explicas creo que puedo hacerlo.



[a ver 'como nos sale'...]
si cualquier duda... comentas?
saludos,
hector.
=->estando 'en sesion' con excel<-...
1) abre el editor de vba [puedes usar alguna de las siguientes formas]:
a) [menu] herramientas / macro / editor de visual basic
b) [por atajo de teclado] {Alt}+{F11}
2) inserta un modulo [de codigo] 'normal'...
a) [menu] insertar / modulo [o en el explorador de proyectos]...
b) click-derecho sobre alguno de los objetos de tu libro -> insertar / modulo
3) [en el modulo de codigo 'recien' creado] copia/pega las lineas de codigo 'propuestas':
Function SustraerDeTexto(Valor As Double, Texto As Range) As Double
Dim Lineas, Linea As Byte, Pos As Byte, Nuevo As String, Total As Double
Lineas = Split(Texto)
For Linea = LBound(Lineas) To UBound(Lineas)
Nuevo = ""
For Pos = 1 To Len(Lineas(Linea))
Select Case Mid(Lineas(Linea), Pos, 1)
Case 0 To 9, Application.International(xlDecimalSeparator)
Nuevo = Nuevo & Mid(Lineas(Linea), Pos, 1)
End Select
Next
Total = Total + Val(Nuevo)
Next
SustraerDeTexto = Valor - Total
End Function
4) 'regresando' a la sesion de excel [puedes 'cerrar' el editor de vba con {Alt}+{F4}]
suponiendo que la celda con los textos es 'A1'
suponiendo que la celda con al valor es 'B1'
suponiendo que la celda donde quieres el resultado es 'C1'
-> pon en C1 una formula con la funcion 'recien' creada' [p.e.] =SustraerDeTexto(B1;A1)
'B1' es el argumento 'valor' [el valor al que se le va a sustraer la suma de valores 'rescatados' de...]
'A1' es el argumento 'texto' [la celda de donde se va a totalizar la suma de valores 'rescatados']

nota: toma en cuenta que dicha funcion SOLO va a ser 'funcional' en el libro que contiene el [moduo de] codigo :-(
Respuesta Responder a este mensaje
#10 Carlos A. Fajardo C.
21/06/2005 - 18:56 | Informe spam
Hector, te cuento que me fue bien, me dió algo de problemas, pero los
solucioné; inicialmente le colocaba el punto con el teclado numérico y lo
convertía en comas, por lo cual lo asumía como decimales, entonces calculaba
mal pero no fue sino cambiarle los puntos con el teclado de texto y
listo funcionó.

Hector muchísimas gracias por tu ayuda, y que ojalá esta comunidad siga
creciendo.

Cordialmente,

Carlos Alberto Fajardo Colmenares

*** carfaja***@etb.net.co sin ***

"Héctor Miguel" escribió en el mensaje
news:%

hola, Carlos !

> ... soy un usuario final... nunca me he metido en... programacion ni...


macros
> ... no se como ni en donde pegar las lineas... en un modulo de codigo


normal
> ... si medio me explicas creo que puedo hacerlo.

[a ver 'como nos sale'...]
si cualquier duda... comentas?
saludos,
hector.
=> ->estando 'en sesion' con excel<-...
1) abre el editor de vba [puedes usar alguna de las siguientes formas]:
a) [menu] herramientas / macro / editor de visual basic
b) [por atajo de teclado] {Alt}+{F11}
2) inserta un modulo [de codigo] 'normal'...
a) [menu] insertar / modulo [o en el explorador de


proyectos]...
b) click-derecho sobre alguno de los objetos de tu libro -> insertar /


modulo
3) [en el modulo de codigo 'recien' creado] copia/pega las lineas de


codigo 'propuestas':
Function SustraerDeTexto(Valor As Double, Texto As Range) As Double
Dim Lineas, Linea As Byte, Pos As Byte, Nuevo As String, Total As Double
Lineas = Split(Texto)
For Linea = LBound(Lineas) To UBound(Lineas)
Nuevo = ""
For Pos = 1 To Len(Lineas(Linea))
Select Case Mid(Lineas(Linea), Pos, 1)
Case 0 To 9, Application.International(xlDecimalSeparator)
Nuevo = Nuevo & Mid(Lineas(Linea), Pos, 1)
End Select
Next
Total = Total + Val(Nuevo)
Next
SustraerDeTexto = Valor - Total
End Function
4) 'regresando' a la sesion de excel [puedes 'cerrar' el editor de vba con


{Alt}+{F4}]
suponiendo que la celda con los textos es 'A1'
suponiendo que la celda con al valor es 'B1'
suponiendo que la celda donde quieres el resultado es 'C1'
-> pon en C1 una formula con la funcion 'recien' creada' [p.e.]


=SustraerDeTexto(B1;A1)
'B1' es el argumento 'valor' [el valor al que se le va a


sustraer la suma de valores 'rescatados' de...]
'A1' es el argumento 'texto' [la celda de donde se va a


totalizar la suma de valores 'rescatados']

nota: toma en cuenta que dicha funcion SOLO va a ser 'funcional' en el


libro que contiene el [moduo de] codigo :-(



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida