Todo se publica por Israel Cassales
-
Mantener una fecha con día fijo
tema contestó a Israel Cassales en Antonio Romero Fórmulas y funciones
Para una posible ayuda le recomiendo que deje un libro de ejemplo que evite las conjeturas y las deducciones porque su redacción final es confusa. Trate de ser lo más explicito que pueda. -
Por si quiere el rango en la celda. Sub ColocarRangoEnCelda() Dim pt As PivotTable Dim rangoDatos As Range ' Ajuste "Hoja2" al nombre de su hoja y "TablaDinamica1" al nombre de su tabla dinámica Set pt = Worksheets("Hoja2").PivotTables("TablaDinamica1") ' Obtener el rango de datos de la tabla dinámica Set rangoDatos = pt.TableRange1 ' Colocar el rango de datos en la celda C1 de la Hoja2 Worksheets("Hoja2").Range("C1").Value = rangoDatos.Address End Sub
-
Saludos cordiales a todos. Para evitar conjeturas y deducciones al lector se recomienda dejar un libro de ejemplo, esto ayuda a proponer ideas específicas en caso de tenerlas. En base a lo leído del tema un código como este debería servir. Debe editar a su conveniencia. Saludos. Sub ObtenerRangoTablaDinamica() Dim pt As PivotTable Dim rangoDatos As Range ' Ajuste "Hoja2" al nombre de su hoja y "TablaDinamica1" al nombre de su tabla dinámica Set pt = Worksheets("Hoja2").PivotTables("TablaDinamica1") ' Obtener el rango de datos de la tabla dinámica Set rangoDatos = pt.TableRange1 ' Mostrar el rango de datos en una caja de mensaje MsgBox "El rango de datos es: " & rangoDatos.Address End Sub
-
Hola a todos. Bueno, si el objetivo es hacer tablas dinámicas, Excel está preparado para hacer lo que buscas. ¿Por qué no intenta relacionar las tablas? Crear una relación entre tablas en Excel También puede usar el asistente dando Alt+T+B
-
Ese debe ser el problema, porque al mover las filas las fórmulas de la hoja2 tienen referencias fijas. Algo que podrías hacer es utilizar una fórmula de búsqueda como BUSCARV o INDICE y COINCIDIR en lugar de referencias directas. Estas funciones buscarán el valor correspondiente en la “hoja1” sin importar el orden.
-
Consulta sin el desarrollo adecuado, dejando conjeturas y deducciones ambiguas, de mi parte no me es posible ofrecer opciones de ayuda.
-
Un desafío común en las consultas es la dificultad de subir los libros de ejemplo, tal vez no sea su caso pero ocurre que intentan compartir una copia del original donde la cantidad de datos es lo que incrementa su tamaño. Entonces ¿cómo subir el libro si el foro no lo permite y cómo recibir ayuda si los expertos se lo piden? La respuesta es como se menciona, un libro de ejemplo, lo que usted necesita es CONSOLIDAR información de todas las hojas en una sola, así que para recibir ayuda en VBA no puede dejar a la deducción la estructura de su libro, así que en su copia elimine la mayoría de sus datos, deje tres hojas y una hoja maestra mostrando un ejemplo de cómo necesita esos datos. En "guardar como" elija el tipo "Binario". El resto, en caso de recibir ayuda dependerá de usted replicarlo en su libro original. Por otro lado, Excel está preparado para hacer lo que menciona. Si gusta de ver opciones que no sean de VBA puede dar una lectura a la siguiente ayuda. Consolidar datos en varias hojas de cálculo
-
Hi Trate de ver que hacían las fórmulas en cuestión pero a su libro le falta o le faltan hojas, por lo que solo podría participar con un par de ideas en general. Lo que entiendo es que según el valor de B3 en C3 debe poner una fórmula u otra, así que es posible que si combina DIRECCION() con INDIRECTO() pueda intercambiar de una fórmula a otra. =SI(B3="Xl",INDIRECTO(DIRECCION(3,5)),SI(O(B3=1,B3=2,B3=3),INDIRECTO(DIRECCION(4,5)),"")) Otra forma sería poner nombre a esas fórmulas en el cuadro de nombres para que las pueda mandar llamar a una o a la otra según el resultado de B3. Por favor tome en cuenta, es solo una idea.
-
Ayuda con funcionamiento macro
tema contestó a Israel Cassales en linacg96 Macros y programación VBA
Sub control2558() Application.ScreenUpdating = False Dim I As Integer I = 4 While Sheets("FT-ADF-2558").Cells(I, 102) <> "" Sheets("FT-ADF-2558").Cells(6, 82) = Sheets("FT-ADF-2558").Cells(I, 102) Dim NombreArchivo, RutaArchivo As String NombreArchivo = "Hoja Control " & Sheets("FT-ADF-2558").Cells(I, 102) RutaArchivo = ActiveWorkbook.Path & "\" & NombreArchivo & ".xlsm" Dim NuevoLibro As Workbook Set NuevoLibro = Workbooks.Add Sheets("FT-ADF-2558").Copy Before:=NuevoLibro.Sheets(1) NuevoLibro.SaveAs Filename:=RutaArchivo NuevoLibro.Close I = I + 1 Wend MsgBox ("Proceso generado con éxito") Application.ScreenUpdating = True End Sub -
Ayuda con funcionamiento macro
tema contestó a Israel Cassales en linacg96 Macros y programación VBA
Ese error es porque no existe la hoja 10 con ese nombre, entonces cámbialo por FT-ADF-2558 -
Ayuda con funcionamiento macro
tema contestó a Israel Cassales en linacg96 Macros y programación VBA
Sub control2558() Application.ScreenUpdating = False Dim I As Integer I = 4 While Hoja10.Cells(I, 102) <> "" Hoja10.Cells(6, 82) = Hoja10.Cells(I, 102) Dim NombreArchivo, RutaArchivo As String NombreArchivo = "Hoja Control " & Hoja10.Cells(I, 102) RutaArchivo = ActiveWorkbook.Path & "\" & NombreArchivo & ".xlsm" Dim NuevoLibro As Workbook Set NuevoLibro = Workbooks.Add Hoja10.Copy Before:=NuevoLibro.Sheets(1) NuevoLibro.SaveAs Filename:=RutaArchivo NuevoLibro.Close I = I + 1 Wend MsgBox ("Proceso generado con éxito") Application.ScreenUpdating = True End Sub -
Ayuda con funcionamiento macro
tema contestó a Israel Cassales en linacg96 Macros y programación VBA
Por lo que puedo leer la macro se atora aquí: Porque en esa instrucción no le dice donde guardar el libro, una idea es terminar la instrucción algo así: NuevoLibro.SaveAs Filename:=RutaArchivo -
Ahora, pudiera ser que tengas celdas vacías, eso rompe la selección continua, así que lo que puedes hacer es seleccionar la primer celda con datos (superior izquierda generalmente) y luego presionar Ctrl + Shift + Fin, eso seleccionara todos los datos que haya en la hoja.
-
Bueno, si todas las celdas tienen datos de manera continua la forma tradicional es presionar Ctrl + Shift + Flecha abajo para seleccionar todas las celdas hasta el final de la columna y luego presionar Ctrl + Shift + Flecha derecha para seleccionar todas las celdas hasta el final de la fila y en un par de segundo seleccionas todo.
-
Hola antes que nada ¡Bienvenido/da! al foro. Para empezar me parece que aquí no es el lugar correcto para hacer consultas, además que así como está deja cosas a la especulación como por ejemplo si estás limitando al usuario a escribir solo valores o puede poner texto, esto sirve para saber qué sentencia poder recomendarte. Por aportarte algo, un código como el siguiente debería servir, pero al no tener libro de ejemplo y varias cosas más es todo lo que puedo sugerir. Private Sub TextBox1_Change() If TextBox1.Text <> "" Then TextBox1.Text = Format(CDbl(TextBox1.Text), "#.##0,00") TextBox1.SelStart = Len(TextBox1.Text) End If End Sub Te recomiendo volver a publicar su tema en una estructura más detallada.
-
Saludos a ambos. Copiar y pegar por sí solas, no tengo el conocimiento de que sirvan como "evento" para actualizar las referencias que buscas hacer, en la forma que lo quieres hacer, ó la fórmula como la quieres hacer. Te recomiendo abrir un tema similar en Macros, es posible que algún Maestro te de alguna idea. Por otro lado, si debe ser con funciones, entonces tendías que interactuar con COLUMNA() y FILA() para que al pegar el destino "sepa" donde está ubicado e intentar cambiar la referencia. =INDIRECTO(CARACTER(COLUMNA()+64)&FILA()) Algo como eso se podría usar para obtener el código ASCII de la letra de la columna (donde 65 es el código para “A”), y FILA() devuelve el número de la fila. La función CARACTER() convierte el código ASCII en una letra. Luego, INDIRECTO() toma la cadena resultante (por ejemplo, “A1”, “B2”, etc.) y la usa como una referencia de celda. En ese caso, una posible idea de editar tu ejemplo sería: =SI(INDIRECTO("'Casos de Prueba'!"&CARACTER(COLUMNA()+64)&"1")="Resultados Ciclo 1"; SI(CONTAR.SI(INDIRECTO("'Casos de Prueba'!"&CARACTER(COLUMNA()+64)&":"&CARACTER(COLUMNA()+64)); "OK")=0; 0; CONTAR.SI(INDIRECTO("'Casos de Prueba'!"&CARACTER(COLUMNA()+64)&":"&CARACTER(COLUMNA()+64)); "OK")); 0) Enfatizo que es una idea, es muy probable que haya que editar. Así como esta su tema, la recomendación del maestro toma relevancia porque especular o deducir no es lo adecuado para intentar ayudar en este tipo de consultas. Por esta causa de mi parte por ejemplo no puedo aportar algo adicional.
-
Con el diseño así como lo tiene en su libro, una fórmula de BUSCARV con COINCIDIR debería ser de utilidad =C5*BUSCARV($C$1,Tabla1[#Todo],COINCIDIR($D5,Tabla1[#Encabezados],0)) Es con lo que participaría en su consulta. Lo que resta es definir que hacer si no encuentra la OT porque así como esta le devolvería error en ese caso, o si tiene condiciones que haya podido omitir también le afectarían el resultado.
-
Pregunta para @jose_alk ¿El diseño en la hoja DATAGlobal es tuyo? Si la respuesta es sí, entonces toma mayor relevancia la propuesta del maestro @Victor7 porque si mira con atención cada que avanza un paso, vuelve a escribir el paso anterior, así hasta completar los tres pasos. Por esta causa la fórmula del maestro vincula solo la última parte de ese rango ya que de continuar con esa tendencia y repetir los ciclos, al final siempre le quedarán los únicos que busca. En ese caso podría omitir la otra hoja Data Valores Unicos, porque desde la primer hoja DATAGlobal si filtra en el tercer paso y quita las vacías le quedarán solo los ciclos completos. Por otro lado, si los registros no estarán siempre tan bien ordenados el escenario cambia, por lo tanto le reitero la pregunta inicial, porque si es suyo el diseño tal vez le conviene reconsiderar su formato y que los pasos estén entre lineas. Eso le dará un mayor control de los datos, los filtros y las funciones. Saludos totales.
-
Saludos totales. Hi @Pedro Alonso Así como está la consulta deja múltiples cosas a la deducción y manejar resultados de tiempo requiere de cierta "estrategia" en las operaciones que se deben realizar. Mencionas que el resultado es grande 4mil+ pero no estás considerando que los meses en realidad no todos tienen los mismos días, además si la cifra fuera aún mayor ¿qué pasa con los años bisiestos? ¿Se puede hacer algo con la poca información que das? Tal vez. Primero debes convertir esas horas en días, luego en meses y por último en años, dejando de residuo las horas que "sobren". Entonces cada año lo promedias a 365.25 y cada mes a 30.44, entonces tendrás una fórmula que se aproxime al resultado que NO ES EXACTO, tomarlo en cuenta. Así que considerando la poca información que dejas, con lo único que puedo aportar (al menos yo) será con un ejemplo si los 4mil y pico fueran horas: =ENTERO(A1/24/365.25)&" años, "&ENTERO(RESIDUO(A1/24,365.25)/30.44)&" meses, "&REDONDEAR(RESIDUO(RESIDUO(A1/24,365.25),30.44),0)&" días, "&RESIDUO(A1,24)&" horas" Te recomiendo mejorar y estructurar las preguntas y los ejemplos.
-
Lo lamento pero no termine de comprender, lo sí es que al dar doble clic no lo convierte por sí solo, deberías dar Enter después. Si le das Esc. después del doble cilc por ejemplo, lo debería dejar como está originalmente. De la consulta original me parece que se cubre la expectativa con la sugerencia del Maestro @Victor7 y el pegado en valores. Del ordenado y en mi caso no me gusta mezclar temas, le podría recomendar si me lo permite crear en un tema nuevo donde se enfoque en esa necesidad porque en una primera instancia, una vez pegado los datos y verlos como texto debería ordenarlos bajo ese esquema. Si va a editar los datos después de pegar podría entonces concatenar cualquier carácter que evitaría la confusión con la fecha y el ordenado. Lo leo cualquier comentario.