............ Foro Excel
Si no lo has hecho aún: REGISTRATE!!!

UNIR FECHAS

Ver el tema anterior Ver el tema siguiente Ir abajo

UNIR FECHAS

Mensaje por Deivid el Vie Oct 30, 2009 4:37 pm

Hola a todos. Tengo una duda. Tengo en A1: "01-12-09", en A2: "02-12-09" y en A3: "03-12-09"(el formato de la casilla es de fecha, claro p.ej, 01-01-09) y en B1 quiero poner las tres fechas de A1, A2, A3 separadas por "," y con el mismo formato. Como lo puedo hacer?
He puesto esta formula en B1: =CONCATENAR(A1;",";A2;",";A3).
Pero me sale la unión de las tres fechas en formato numérico, a pesar de que cambio el formato a Fecha en B1 no hay manera...
Gracias.

Deivid

Cantidad de envíos : 32
Fecha de inscripción : 20/02/2008

Volver arriba Ir abajo

Re: UNIR FECHAS

Mensaje por GalileoGali el Vie Oct 30, 2009 7:08 pm

=texto(A1;"dd-mm-yy")&","&texto(A2;"DD-MM-YY")
Prueba con algo semejante a esto, puede que tu sistema haya que usar "dd-mm-aa"

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional

GalileoGali
Admin

Masculino Cantidad de envíos : 1962
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: UNIR FECHAS

Mensaje por Deivid el Sáb Oct 31, 2009 10:24 am

Gracias por la ayuda Gali, es lo que necesitaba. Ahora se me presenta una duda mayor.
Tengo esta hoja
Hoja1

 ABCDEF
1DATA  AYUDA de GALI MI DUDA
201-01-09  01-01-09, 05-01-09, 06-01-09 01-01-09, 05-01-09, 06-01-09
305-01-09     
406-01-09     
5      
Spreadsheet Formulas
CellFormula
D2=TEXTO(A2;"DD-MM-AA")&", "&TEXTO(A3;"DD-MM-AA")&", "&TEXTO(A4;"DD-MM-AA")
F2=SI(Y($A$2<>"";$A$3<>"";$A$4<>"");TEXTO(A2;"DD-MM-AA")&", "&TEXTO(A3;"DD-MM-AA")&", "&TEXTO(A4;"DD-MM-AA");SI(Y($A$2<>"";$A$3<>"");TEXTO(A2;"DD-MM-AA")&", "&TEXTO(A3;"DD-MM-AA");SI($A$2<>"";TEXTO($A$2;"DD-MM-AA");"")))


Excel tables to the web >> [Tienes que estar registrado y conectado para ver este vínculo]

Y quiero convertir todo esa fórmula en codigo vba. Gracias.

Deivid

Cantidad de envíos : 32
Fecha de inscripción : 20/02/2008

Volver arriba Ir abajo

Re: UNIR FECHAS

Mensaje por GalileoGali el Sáb Oct 31, 2009 12:35 pm

para obtener el codigo de VBA para una formula basta con
1) escribir la formula y verificar que funcione
2)Prender la Grabadora de macros
3) Ingresar a la celda de la formula con F2
4) confirmar la fromula con ENTER
5) apagar la grabadora de macros
6) ver el codigo creado, adaptar.

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional

GalileoGali
Admin

Masculino Cantidad de envíos : 1962
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: UNIR FECHAS

Mensaje por P@li el Sáb Oct 31, 2009 2:10 pm

Hola Deivid,
Me uno a la iniciativa de Gali, hay que usar la grabadora de macros!
Pero como hace tiempo que no publico nada, y como el tema es bastante sencillo, te propongo dos funciones de macros.

Por un lado esta, que es una copia identica a tu formula de excel, pasada a macro:
Código:

Public Function unirFechas(fecha1, fecha2, fecha3)
    '=SI(Y($A$2<>"";$A$3<>"";$A$4<>"");TEXTO(A2;"DD-MM-AA")&", "&TEXTO(A3;"DD-MM-AA")&", "&TEXTO(A4;"DD-MM-AA");SI(Y($A$2<>"";$A$3<>"");TEXTO(A2;"DD-MM-AA")&", "&TEXTO(A3;"DD-MM-AA");SI($A$2<>"";TEXTO($A$2;"DD-MM-AA");"")))
    unirFechas = ""
    If fecha1 <> "" And fecha2 <> "" And fecha3 <> "" Then
        unirFechas = Format(fecha1, "DD-MM-YY") & ", " & Format(fecha2, "DD-MM-YY") & ", " & Format(fecha3, "DD-MM-YY")
    Else
        If fecha1 <> "" And fecha2 <> "" Then
            unirFechas = Format(fecha1, "DD-MM-YY") & ", " & Format(fecha2, "DD-MM-YY")
        Else
            If fecha1 <> "" Then
                unirFechas = Format(fecha1, "DD-MM-YY")
            End If
        End If
    End If
End Function

Y esta otra, que te da la posibilidad de ingregar una cantidad indefinida de fechas, a las cuales le da el mismo formato y las separa por comas.
Código:

Public Function unirFechas2(ParamArray fechas())
    unirFechas2 = ""
    For i = 0 To UBound(fechas)
        If fechas(i) <> "" Then
            unirFechas2 = unirFechas2 & ", " & Format(fechas(i), "DD-MM-YY")
        End If
    Next
    If unirFechas2 <> "" Then
        unirFechas2 = Mid(unirFechas2, 3)
    End If
End Function

Te aviso que estas funciones tenés que ponerlas en un módulo de tu libro, vas a necesitar un poco de experiencia con macros.
Y para llamarlas desde excel, en la celda ponés unirFechas(A1;A2;A3) en el primer caso. Para la segunda propuesta unirFechas2([las celdas que quieras]).

Saludos.
Pablo.

P@li
Admin

Masculino Cantidad de envíos : 238
Edad : 33
Ciudad - Pais : Buenos Aires, Argentina
Version de Excel : Microsoft Excel 2002 (10.2614.2625)
Fecha de inscripción : 03/03/2008

Volver arriba Ir abajo

Re: UNIR FECHAS

Mensaje por GalileoGali el Sáb Oct 31, 2009 5:33 pm

P@li: Magistral!!.
Francamente nunca use ParamArray, veo que tendre que ir a la Aydua de VBA para aprender sobre esto.

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional

GalileoGali
Admin

Masculino Cantidad de envíos : 1962
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: UNIR FECHAS

Mensaje por P@li el Sáb Oct 31, 2009 6:59 pm

Gali,
Gracias por el comentario!

Te cuento que no está fácil de encontrar, te pego la ayuda de VBA que vi yo:

Comprender las matrices de parámetros

Una matriz de parámetros se utiliza para pasar una matriz de argumentos a un procedimiento. No es necesario saber el número de elementos de la matriz cuando se define el procedimiento.

Para identificar una matriz de parámetros se utiliza la palabra clave ParamArray. La matriz debe estar definida como una matriz del tipo Variant y debe ser el último argumento en la definición del procedimiento.

El siguiente ejemplo muestra de qué forma se puede definir un procedimiento con una matriz de parámetros.

Sub CualquierNumeroArgs(strNombre As String, ParamArray intPuntuacion() As Variant)
Dim intI As Integer

Debug.Print strNombre; " Puntuaciones"
' Utiliza la función UBound para encontrar el límite superior de la matriz.
For intI = 0 To UBound(intPuntuacion())
Debug.Print " "; intPuntuacion(intI)
Next intI
End Sub

El siguiente ejemplo muestra de que formas se puede llamar este procedimiento.

CualquierNumeroArgs "Juan", 10, 26, 32, 15, 22, 24, 16

CualquierNumeroArgs "Manuel", "Alto", "Bajo", "Medio", "Alto"



Saludos,
Pablo.

P@li
Admin

Masculino Cantidad de envíos : 238
Edad : 33
Ciudad - Pais : Buenos Aires, Argentina
Version de Excel : Microsoft Excel 2002 (10.2614.2625)
Fecha de inscripción : 03/03/2008

Volver arriba Ir abajo

Re: UNIR FECHAS

Mensaje por GalileoGali el Sáb Oct 31, 2009 7:19 pm

Mi version de la funcon de P@li, para rangos bidimensionales
Código:
Option Base 1
Public Function unirFechas2(rng As Range) As String
Dim fechas As Variant
Dim j As Long, i As Long
fechas = rng
ReDim Preserve fechas(rng.Rows.Count, rng.Columns.Count)
    unirFechas2 = ""
For j = 1 To UBound(fechas, 1)
    For i = 1 To UBound(fechas, 2)
        If fechas(j, i) <> "" Then
            unirFechas2 = unirFechas2 & ", " & Format(fechas(j, i), "DD-MM-YY")
        End If
    Next
Next
    If unirFechas2 <> "" Then
        unirFechas2 = Mid(unirFechas2, 3)
    End If
End Function

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional

GalileoGali
Admin

Masculino Cantidad de envíos : 1962
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: UNIR FECHAS

Mensaje por GalileoGali el Sáb Oct 31, 2009 7:24 pm

A propósito de pasar una matriz a un procedimiento, estuve probando a ver si CTRL+MAYUS(SHIFT)+ENTER, podia convertir un argumento Rango en la Matriz de valores esperada por "Unirfechas2" convirtiendo a la Funcion en matricial, PERO NO TUVE EXITO, asi que estuve adaptando tu codigo a Rangos

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional

GalileoGali
Admin

Masculino Cantidad de envíos : 1962
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: UNIR FECHAS

Mensaje por P@li el Dom Nov 01, 2009 1:53 pm

Ya que la complicamos, la complicamos mejor, jajajaja, acá pongo la versión de Gali para rangos bidireccionales, retornando al ParamArray para varios rangos inclusive.

Agrego a la función la personalización del formato y de la cadena de separación de valores.

No solo se podrían unir fechas, tambien monedas, o porcentajes, por eso le cambié el nombre por unirDatos.

Código:

Option Base 1

Public Function unirDatos(formato As String, division As String, ParamArray rng()) As String
    Dim fechas
    Dim j As Long, i As Long
    Dim c As Long
   
    For c = 0 To UBound(rng)
        ReDim fechas(rng(c).Rows.Count, rng(c).Columns.Count)
        fechas = rng(c)
        If TypeName(fechas) <> "Variant()" Then
            If fechas <> "" Then
                unirDatos = unirDatos & division & format(fechas, formato)
            End If
        Else
            For j = 1 To UBound(fechas, 1)
                For i = 1 To UBound(fechas, 2)
                    If fechas(j, i) <> "" Then
                        unirDatos = unirDatos & division & format(fechas(j, i), formato)
                    End If
                Next
            Next
        End If
    Next
   
    If unirDatos <> "" Then
        unirDatos = Mid(unirDatos, Len(division) + 1)
    End If
End Function


Sintaxis
unirDatos(formato, division, [rangos de celdas])
formato Requerido. Cadena de texto. con el formato deseado (ej.: "DD/MM/YYYY", "$ 0.00", "0.00 %"
division Requerido. Cadena de texto con que va a separar los datos
[rangos de celdas]. Celda/s, Rango/s, o la combinación de ellos.

Saludos.

P@li
Admin

Masculino Cantidad de envíos : 238
Edad : 33
Ciudad - Pais : Buenos Aires, Argentina
Version de Excel : Microsoft Excel 2002 (10.2614.2625)
Fecha de inscripción : 03/03/2008

Volver arriba Ir abajo

Re: UNIR FECHAS

Mensaje por GalileoGali el Dom Nov 01, 2009 5:17 pm

Buena UNIVERSALIZACION!!!!!

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional

GalileoGali
Admin

Masculino Cantidad de envíos : 1962
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: UNIR FECHAS

Mensaje por P@li el Dom Nov 01, 2009 5:33 pm

Una más para tu coleccion de UDFs.

P@li
Admin

Masculino Cantidad de envíos : 238
Edad : 33
Ciudad - Pais : Buenos Aires, Argentina
Version de Excel : Microsoft Excel 2002 (10.2614.2625)
Fecha de inscripción : 03/03/2008

Volver arriba Ir abajo

Re: UNIR FECHAS

Mensaje por P@li el Vie Nov 06, 2009 3:48 pm

Deivid, sería bueno que nos comentaras, en algún rato libre, si te sirvieron las soluciones que planteamos en este hilo.

Saludos.
Pablo.

P@li
Admin

Masculino Cantidad de envíos : 238
Edad : 33
Ciudad - Pais : Buenos Aires, Argentina
Version de Excel : Microsoft Excel 2002 (10.2614.2625)
Fecha de inscripción : 03/03/2008

Volver arriba Ir abajo

Re: UNIR FECHAS

Mensaje por Deivid el Dom Nov 08, 2009 11:29 am

P@li escribió:Hola Deivid,
Me uno a la iniciativa de Gali, hay que usar la grabadora de macros!
Pero como hace tiempo que no publico nada, y como el tema es bastante sencillo, te propongo dos funciones de macros.

Por un lado esta, que es una copia identica a tu formula de excel, pasada a macro:
Código:

Public Function unirFechas(fecha1, fecha2, fecha3)
    '=SI(Y($A$2<>"";$A$3<>"";$A$4<>"");TEXTO(A2;"DD-MM-AA")&", "&TEXTO(A3;"DD-MM-AA")&", "&TEXTO(A4;"DD-MM-AA");SI(Y($A$2<>"";$A$3<>"");TEXTO(A2;"DD-MM-AA")&", "&TEXTO(A3;"DD-MM-AA");SI($A$2<>"";TEXTO($A$2;"DD-MM-AA");"")))
    unirFechas = ""
    If fecha1 <> "" And fecha2 <> "" And fecha3 <> "" Then
        unirFechas = Format(fecha1, "DD-MM-YY") & ", " & Format(fecha2, "DD-MM-YY") & ", " & Format(fecha3, "DD-MM-YY")
    Else
        If fecha1 <> "" And fecha2 <> "" Then
            unirFechas = Format(fecha1, "DD-MM-YY") & ", " & Format(fecha2, "DD-MM-YY")
        Else
            If fecha1 <> "" Then
                unirFechas = Format(fecha1, "DD-MM-YY")
            End If
        End If
    End If
End Function

Y esta otra, que te da la posibilidad de ingregar una cantidad indefinida de fechas, a las cuales le da el mismo formato y las separa por comas.
Código:

Public Function unirFechas2(ParamArray fechas())
    unirFechas2 = ""
    For i = 0 To UBound(fechas)
        If fechas(i) <> "" Then
            unirFechas2 = unirFechas2 & ", " & Format(fechas(i), "DD-MM-YY")
        End If
    Next
    If unirFechas2 <> "" Then
        unirFechas2 = Mid(unirFechas2, 3)
    End If
End Function

Te aviso que estas funciones tenés que ponerlas en un módulo de tu libro, vas a necesitar un poco de experiencia con macros.
Y para llamarlas desde excel, en la celda ponés unirFechas(A1;A2;A3) en el primer caso. Para la segunda propuesta unirFechas2([las celdas que quieras]).

Saludos.
Pablo.

Hola amigos. Disculpen mi incomparecencia estos, dias. He estado en cama y ya se imaginan...
Pues la verdad que al final he optado por este método de P@li y me funciona muy bien. No he probado con Arrays puesto que no los conozco todavía, aunque me voy a animara a hacerlo.
Les agradezco su aporte. Thank you very much.

Deivid

Cantidad de envíos : 32
Fecha de inscripción : 20/02/2008

Volver arriba Ir abajo

Re: UNIR FECHAS

Mensaje por Contenido patrocinado Hoy a las 1:57 am


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.