diferencia entre datos de 2 celdas

03/08/2007 - 17:15 por Juan Gustavo Fogelman | Informe spam
hola Gente

tengo 2 celdas con datos y quiero en una tercera obtener la diferencia
EJ:

celdaA1: "01; 02; 03; 05; 07; 11; "
celdaA2: "01; 03; 07; 11; "
el resultado de celdaA3 deberia ser: "02; 05; "

debe notarse que uso: 2 numeros, un punto y coma, y un espacio
o sea: cada dato ocupa 4 espacios, incluido el punto y coma y el espacio
los datos son del 00 al 99 y pueden haber tantos como 100 en cada celda
la celdaA1 siempre tiene todos los datos de la celdaA2, mas otros. la
celdaA2, nunca tiene datos que no esten en la celdaA1
o sea: la celdaA2 es un subconjunto de la celdaA1

Gracias de antemano, que siempre me ayudan

Preguntas similare

Leer las respuestas

#1 KL
03/08/2007 - 23:13 | Informe spam
Hola Juan Gustavo,

"Juan Gustavo Fogelman" wrote in message
news:
tengo 2 celdas con datos y quiero en una tercera obtener la diferencia
celdaA1: "01; 02; 03; 05; 07; 11; "
celdaA2: "01; 03; 07; 11; "
el resultado de celdaA3 deberia ser: "02; 05; "
debe notarse que uso: 2 numeros, un punto y coma, y un espacio
o sea: cada dato ocupa 4 espacios, incluido el punto y coma y el espacio
los datos son del 00 al 99 y pueden haber tantos como 100 en cada celda
la celdaA1 siempre tiene todos los datos de la celdaA2, mas otros. la
celdaA2, nunca tiene datos que no esten en la celdaA1
o sea: la celdaA2 es un subconjunto de la celdaA1



Asi a simple vista, no creo que se pueda hacer solamente mediante funciones
estandar de Excel (la opcion de la macrofuncion Evaluete tampoco valdria por
el numero de elementos posible)

Podrias probar la siguiente funcion definida por usuario (UDF):

'--En un modulo VBA estandar del libro (p.ej. Modulo1)--
Public Function Difference( _
strTextOrig As String, strTextNew As String, strSeparator As String)
As String
Dim arrElements As Variant
Dim i As Integer
Dim temp As String
temp = strTextOrig
arrElements = Split(strTextNew, strSeparator)
For i = LBound(arrElements) To UBound(arrElements) - 1
temp = Replace(temp, arrElements(i) & strSeparator, "")
Next i
Difference = temp
End Function
'

en la hoja utiliza la siguiente sintaxis:

=Difference(A1;B1;"; ")

Saludos,
KL
Respuesta Responder a este mensaje
#2 Juan Gustavo Fogelman
03/08/2007 - 23:55 | Informe spam
Gracias por ahora... mañana cuando este frente a la pc que tiene esa
planilla lo pruebo

ya me estaba imaginando que tendria que hacer algo en vba
en access manejo muy bien vba. pero excel es algo relativamente "nuevo" para
mi.
digo, mas alla de una suma o cosas asi.

luego te cuento como me fue
Respuesta Responder a este mensaje
#3 julian-vlc-sp
04/08/2007 - 00:04 | Informe spam
¡Importante!: Colabora con el grupo.Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias.

He intentado hacerlo sin código pero me he encontrado un problema que ahora
preguntaré a KL.

Si te parece, puedes probar lo siguiente (después miro si se parece o no a
lo expuesto por KL)

Function LasDiferencias(celdaa1 As String, celdaa2 As String)

Dim ElResultado As String
Dim i As Integer

ElResultado = celdaa1

For i = 1 To Len(celdaa2) / 4

ElResultado = Replace(ElResultado, Mid(celdaa2, 4 * (i - 1) + 1, 4),
"")

Next i

LasDiferencias = ElResultado

End Function


SALUDOS.
Julián-Valencia-España
http://ijulian.iespana.es/


"Juan Gustavo Fogelman" escribió en el
mensaje news:

hola Gente

tengo 2 celdas con datos y quiero en una tercera obtener la diferencia
EJ:

celdaA1: "01; 02; 03; 05; 07; 11; "
celdaA2: "01; 03; 07; 11; "
el resultado de celdaA3 deberia ser: "02; 05; "

debe notarse que uso: 2 numeros, un punto y coma, y un espacio
o sea: cada dato ocupa 4 espacios, incluido el punto y coma y el espacio
los datos son del 00 al 99 y pueden haber tantos como 100 en cada celda
la celdaA1 siempre tiene todos los datos de la celdaA2, mas otros. la
celdaA2, nunca tiene datos que no esten en la celdaA1
o sea: la celdaA2 es un subconjunto de la celdaA1

Gracias de antemano, que siempre me ayudan


Respuesta Responder a este mensaje
#4 julian-vlc-sp
04/08/2007 - 00:30 | Informe spam
¡Importante!: Colabora con el grupo.Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias.

Antes se me ha olvidado indicar que para llamar a la función que te propongo
has de hacerlo como sigue:

=lasdiferencias(A1;A2)

El problema que tenía para hacerlo sin código me ha desaparecido y no se
como.

Es igual, si quieres hacerlo sin código mi propuesta es:

En C1 pones:

=SI(FILAS(C$1:C1)>LARGO($A$2)/4;"";SUSTITUIR(A1;EXTRAE($A$2;4*(FILAS(C$1:C1)-1)+1;4);""))

en C2 pones:

=SI(FILAS(C$1:C2)>LARGO($A$2)/4;"";SUSTITUIR(C1;EXTRAE($A$2;4*(FILAS(C$1:C2)-1)+1;4);""))

la formula de C2 la arrastras hasta C100

La ultima celda escrita que te aparezca en el rango C1:C100 será el
resultado que buscas


SALUDOS.
Julián-Valencia-España
http://ijulian.iespana.es/


"julian-vlc-sp" escribió en el mensaje
news:
> ¡Importante!: Colabora con el grupo.Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias.
>
He intentado hacerlo sin código pero me he encontrado un problema que
ahora preguntaré a KL.

Si te parece, puedes probar lo siguiente (después miro si se parece o no a
lo expuesto por KL)

Function LasDiferencias(celdaa1 As String, celdaa2 As String)

Dim ElResultado As String
Dim i As Integer

ElResultado = celdaa1

For i = 1 To Len(celdaa2) / 4

ElResultado = Replace(ElResultado, Mid(celdaa2, 4 * (i - 1) + 1,
4), "")

Next i

LasDiferencias = ElResultado

End Function


SALUDOS.
Julián-Valencia-España
http://ijulian.iespana.es/


"Juan Gustavo Fogelman" escribió en el
mensaje news:

hola Gente

tengo 2 celdas con datos y quiero en una tercera obtener la diferencia
EJ:

celdaA1: "01; 02; 03; 05; 07; 11; "
celdaA2: "01; 03; 07; 11; "
el resultado de celdaA3 deberia ser: "02; 05; "

debe notarse que uso: 2 numeros, un punto y coma, y un espacio
o sea: cada dato ocupa 4 espacios, incluido el punto y coma y el espacio
los datos son del 00 al 99 y pueden haber tantos como 100 en cada celda
la celdaA1 siempre tiene todos los datos de la celdaA2, mas otros. la
celdaA2, nunca tiene datos que no esten en la celdaA1
o sea: la celdaA2 es un subconjunto de la celdaA1

Gracias de antemano, que siempre me ayudan






Respuesta Responder a este mensaje
#5 Juan Gustavo Fogelman
04/08/2007 - 01:41 | Informe spam
Bueno, al fin lo arme en VBA
***
Function distintos(celda1 As String, celda2 As String)

Dim contar1 As Integer
Dim numero1(99) As Integer
Dim numero2(99) As Integer
Dim resultado As String

For contar1 = 0 To (Len(celda1) / 4) - 1
numero1(Mid(celda1, contar1 * 4 + 1, 2)) = 1
Next

For contar1 = 0 To (Len(celda2) / 4) - 1
numero2(Mid(celda2, contar1 * 4 + 1, 2)) = 1
Next

For contar1 = 0 To 99
If numero1(contar1) = 1 And numero2(contar1) = 0 Then
resultado = resultado & Format(contar1, "00") & "; "
End If
Next
distintos = resultado
End Function
***

es mucho menos eficiente que la que me recomendaste, pero esta al menos la
entiendo mejor.
Muchas gracias
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida