Jump to content

digitalboy

Members
  • Content Count

    811
  • Joined

  • Last visited

  • Days Won

    19

6 Followers

About digitalboy

  • Rank
    Advanced Member

Contact Methods

  • Website URL Array
  • Twitter Array

Profile information

  • Gender Array
  • Localización: Array

Converted

  • Campos Array

Recent Profile Visitors

1,261 profile views
  1. Todo aquel que no cuente con una suscripción a 365 puede irse olvidando de dicha nueva funcionalidad. Primero MS se tardo en incorporarlas y ahora no tan fácilmente se puede acceder a las mismas... que mal! Saludos!
  2. En que versión? Tengo Excel 2013 y no cuento con dicha función. Saludos!
  3. Hola a todos! @macasillasg me parece que seria bueno que dieras mayor detalle... 1. Columna con bastantes fechas... Alrededor de cuantas fechas estamos hablando? 2. Me imagino que al estar en la sección de Excel General queda descartado el hacer uso de macros... Por lo cual solo resta hacer uso de formulas, tablas dinámicas u otras alternativas... 3.Ahora viendo el orden de las fechas... debo suponer que las mismas siempre estarán ordenadas de menor a mayor? Basandome en el punto anterior te dejo una solución empleando una columna Auxiliar (Columna B), en la columna D están los meses (números) y en la columna E esta el conteo. Si estuviéramos en Google Sheets... Podrias usar la función UNIQUE que te da los valores únicos y después proceder a hacer el conteo por mes. También podrías utilizar una herramienta como GAWK (AWK) que es buenísima para procesar archivos de texto, bastaría con copiar las fechas a un archivo de texto y guardarlo en la unidad C, para posteriormente llamar a GAWK dela siguiente forma en la consola: gawk "{fechas[$1]} END { for(i in fechas) { meses[substr(i,4,7)]++ } for(i in meses) print i, meses[i] }" c:\fechas.txt Y listo, ahí tendrías tu conteo sin duplicados. Saludos! Contarfechas.xlsx
  4. El Procedimiento AgruparDatosZ_GP se desborda... creo que con solo cambiar las variables de enteros a long todo se resuelve. El procedimiento AgruparDatosMatriz_GP va genial... 40 mil lineas en un segundo, pero cuando se intenta con mas de 42 mil registros da error. Saludos!
  5. @Leopoldo Blancas eres programador Python? Sin duda es una buena alternativa al igual que Ruby (el cual se me hace mas elegante). Pero creo que una mejor alternativa para este problema es AWK... Sobre todo para procesar archivos de texto, incluso aquellos que excedan el millón de registros. BEGIN {FS="\t"} { if (NR > 1) { llaves[$1]++; for(i=2; i<=NF; i++) datos[$1,i] = datos[$1,i] $i ", " } } END {for(llave in llaves) { reg = llave "\t" for(j=2; j<=4; j++) reg = reg "\t" substr(datos[llave,j],1,length(datos[llave,j])-2) print reg } } Saludos!
  6. Como... Al Final se quedo con otra solución diferente, que encontró en otro lugar? jajaja
  7. Para este tenga no veo la relación con Excel, salvo para concatenar y formar los comandos con sus respectivos parámetros y después usar un archivo por lotes. Saludos.
  8. Esa línea no es obligatoria... Además que en la consulta inicial se específica que se quiere el resultado en un array, no en la hoja de cálculo. Saludos!
  9. Hola @FernandoML Te brindo mi aportación: Sub GenerarAleatorios() Dim aleatorios As Variant Range("B1:B22") = [ROW(B1:B22)-1] Range("A1:A22").Formula = "=RAND()" Range("A1").CurrentRegion.Sort Range("A1"), xlAscending aleatorios = Application.Transpose(Range("A1").CurrentRegion.Offset(, 1).Resize(, 1).Value2) Cells.Clear End Sub Saludos!
  10. Hola a todos... Me sigue pareciendo redundante la función Val_Buscado, cuando bien se podría haber empleado la siguiente formula: =BUSCARV(A15,B21:K34,COINCIDIR(K21,B21:K21),0) Será solo por obtener el cuadro de dialogo de argumentos a función? Y aun asi... Pero cada quien conoce sus necesidades. Saludos!
  11. @nickmartinez sigo pensando lo mismo.... Describe que significa cada parámetro de tu udf, que parámetros das de entrada y cual seria el valor de salida, por que yo no lo veo ningún sentido a lo que tienes. Saludos!
  12. Hola @gonza, Cuantos miles de registros manejas en promedio? Pregunto esto por dos observaciones que tengo... Para empezar este es el código de mi propuesta: Option Explicit Sub test() Dim datos As Variant Dim aux() As Variant Dim i As Long Dim j As Long Dim k As Variant Dim fila As Long Debug.Print Time Range("F:I").Delete With Range("A1").CurrentRegion .Range("F:J").CurrentRegion.Delete .Columns(1).Copy .Range("F1") .Range("F1").CurrentRegion.RemoveDuplicates 1, xlYes .Rows(1).Copy Range("F1") datos = .Offset(1).Value fila = .Range("F1").CurrentRegion.Rows.Count ReDim aux(1 To fila - 1, 1 To 4) End With For i = LBound(datos) To UBound(datos) k = Evaluate("MATCH(" & datos(i, 1) & ",OFFSET(F1:F" & fila & ",,,,1),0)") If IsNumeric(k) Then If aux(k - 1, 1) = "" Then aux(k - 1, 1) = datos(i, 1) aux(k - 1, 2) = datos(i, 2) aux(k - 1, 3) = datos(i, 3) aux(k - 1, 4) = datos(i, 4) Else aux(k - 1, 2) = aux(k - 1, 2) & "," & datos(i, 2) aux(k - 1, 3) = aux(k - 1, 3) & "," & datos(i, 3) aux(k - 1, 4) = aux(k - 1, 4) & "," & datos(i, 4) End If End If Next Range("F2").Resize(UBound(aux), 4).Value = aux Debug.Print Time End Sub No están rápida como la proporcionada por @Leopoldo Blancas (la cual todavía podría optimizarse...) Respecto a las observaciones: Hice una prueba con mi macro con una cantidad de 100 mil registros (repitiendo las 10 llaves) y cambiando el delito, narcótico y auto por letras que genera de manera aleatoria. Algunas de las macros se quedan pensando, la de Leopoldo se comporta raro con esa cantidad de registros. Dependiendo la cantidad de registros que se maneje, sobre todo si se repite bastante una clave obviamente se va a tener una cadena enorme de caracteres en delito, narcótico, auto pudiendo toparse con el limite de los 32767 caracteres que puede contener una celda. A mi me paso con esa cantidad de registros y eso que use letras para los tres campos. Solo para que valides el largo de las cadenas generadas por la macro que elijas utilizar Gonza. Saludos!
  13. Hola @nickmartinez Tu consulta me suena a ... Querer reinventar la rueda! Hacer una UDF que dependa de otra o varias funciones nativas, mejor las anido en la interfaz de Excel y me evito molestia. Function Val_Buscado(Celda_Buscada As Range, Celda_Ref As Range, Columna As Range, Matriz As Range) Dim Columnas As Integer Dim valor As Double Application.Volatile Columnas = Range(Columna).Find(Celda_Ref).Column - 1 valor = Application.WorksheetFunction.VLookup(Range(Celda_Buscada), Range(Matriz), Columnas, 0) Val_Buscado = valor End Function Luego en tu código celda_buscada esta como rango y luego la metes dentro de un range? Las cosas funcionan diferente en Excel y VBA. Te sugiero que antes empieces por lo básico y vayas poco a poco. Saludos!
  14. Hola a todos! Seria bueno contar con algún tipo de botón que sirva para clasificar las preguntas en alguna de las categorías mencionadas por Antoni y así ni siquiera los demás colaboradores pierdan su tiempo en consultar dicha pregunta/duda. Yo hace años que me di cuenta de lo antes expuesto y sobre todos que hay dudas o preguntas que ya han sido respondidas o puede encontrarse respuesta en Google. Ahora solo contesto alguna que otra duda que despierte mi interés o tenga algún tiempo de sobra para responder. En este y otros foros se presenta la misma situación de personas que no no saben dar detalle explicito de lo que necesitan, quieren proyecto completo, etc... Saludos!
  15. Hola @howling Prueba a modificar tu código del ComboBox3 para que quede de la siguiente manera: Private Sub ComboBox3_Change() Dim Final As Long With Me.ListBox1 Final = Sheets("AUXILIAR").Range("A" & Rows.Count).End(xlUp).Row .ColumnWidths = "80 pt;30 pt;200 pt;35 pt;40 pt;40 pt;35 pt;49 pt" .RowSource = "AUXILIAR!" & Sheets("AUXILIAR").Range("A2:H" & Final).Address .ColumnCount = 8 End With End Sub Yo utilizo la propiedad RowSource para que el listbox cargue los datos desde un rango, como veras empiezo desde la segunda fila (A2:H & Final), ya que la primera es para los encabezados y solita la toma el listbox, siempre y cuando la propiedad ColumHeads este en true. Buscando en internet puedes obtener mas documentación y ejemplos de la propiedad RowSource, la cual puede llegar a ser mas práctica que ir cargando elemento por elemento. Nota: La Propiedad RowSource no funciona en MAC. Saludos!
×
×
  • Create New...

Important Information

Privacy Policy

Ayuda Excel - Madrid, Madrid, ES - Valorada por 5112 personas - Aprender Excel - Total: 4.7 / 5