Saltar al contenido

Israel Cassales

Miembro
  • Unido

  • Última visita

Todo se publica por Israel Cassales

  1. También es posible hacer eso con fórmulas directo sobre la validación de datos, creando los nombres de las tablas y usando la función INDIRECTO() Si le interesa cree un tema similar en esa sección. Le dejo el libro con el VBA Ejemplo 2.xlsb
  2. Hola, Este código hace literalmente eso Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Me.Range("B2")) Is Nothing Then Application.EnableEvents = False Me.Range("B3").ClearContents With Me.Range("B3").Validation .Delete Select Case Me.Range("B2").Value Case 1 .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, Formula1:="Avion,Barco" Case 3 .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, Formula1:="Barco" Case Else End Select End With Application.EnableEvents = True End If End Sub
  3. Antes que nada ¡Muy bonito el foro con el cambio! El Maestro tiene buenos argumentos al pedirle más información, porque con los datos que expone usted sólo se puede aportar alguna idea sencilla: Puede usar las funciones en una fórmula de matriz INDICE y COINCIDIR junto con la lógica de un rango. Como usted tiene 365 no necesita los corchetes, aunque puede afectar el rendimiento dependiendo de la cantidad de los datos porque está relacionando columnas completas. =INDICE(DatosOrigen!A:A, COINCIDIR(VERDADERO, (DatosOrigen!B:B >= MisDatos!B2*0.9)*(DatosOrigen!B:B <= MisDatos!B2*1.1), 0)) Imagine: En su hoja "DatosOrigen", la columna de Folios es la A y la columna de Importes es la B. En su hoja "MisDatos", el Importe aproximado que tienes es la celda B2 (y quieres que el folio aparezca en A2). Importante si es que hay Múltiples Coincidencias: La fórmula traerá el primer folio que encuentre que cumpla con el criterio. Si hay varios importes dentro de su margen de tolerancia, solo devolverá el folio asociado al primero que aparezca en su lista de "DatosOrigen". Adicionalmente le funcionaría mejor Power Query
  4. Al parecer no hay observaciones adicionales del consultante, esperando la idea sea de utilidad termino mi participación en el tema. Saludines
  5. VTL - HHE_101128.xlsx
  6. Hola, El texto citado no lo termine de entender, la celda adyacente a Z27 se relaciona con la fila A28 de la hoja VTL1 y el resultado 35 de su ejemplo, se obtiene de la fila 8, así que para hacer algo sin complicaciones use la columna BM para devolver ese valor. Aprovechando los parámetros de discriminación que uso usted para pintar las celdas de la fila, podría usar esos mismos en una fila auxiliar y así obtener un valor que podría usar como criterio en alguna función, sin tener que meterse al terreno de los colores del condicional, porque no son los mismos que los de la paleta de colores en cuestiones de código. ¿Entonces una solución con macros no es de su interés? Si cambia de opinión podría colocar el tema en esa sección, querer formular con los colores del formato condicional tiene sus características específicas, sin mencionar que se actualice "sola". Aunque bueno, todavía es posible que algún maestro o usuario avanzado le pase una solución con alguna función personalizada al ver que usted tiene 365. Si le interesa una idea sencilla podría usar un rango en la fila 5: =SI.ERROR(COINCIDIR(K7,CALCULOS!$B$4:$B$35,0),SI(O(DIASEM(K7)=7,DIASEM(K7)=1),1,0)) Eso le daría la opción de usar: =SUMAR.SI($K$5:$AY$5,">=1",K8:AY8) Saludines
  7. NUMEROS DENTRO DE UNA CELDA.xlsx
  8. Hola, Una idea: =LARGO(G4)-LARGO(SUSTITUIR(G4,"-",""))+1 En 365: =CONTARA(DIVIDIRTEXTO(G4,"-"))
  9. Libro2.xlsb
  10. Una idea con VBA Private Sub Worksheet_Change(ByVal Target As Range) Dim ws As Worksheet Dim filterRange As Range Dim selectedValue As String Dim lastRow As Long Set ws = ThisWorkbook.Sheets("Hoja1") lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row Set filterRange = ws.Range("A4:D" & lastRow) If Not Intersect(Target, ws.Range("B2")) Is Nothing Then selectedValue = ws.Range("B2").Value filterRange.AutoFilter Field:=1, Criteria1:=selectedValue If selectedValue = "" Then filterRange.AutoFilter End If End If End Sub
  11. ¿Este tema no esta resuelto ya en la otra sección? https://ayudaexcel.com/foro/topic/47725-contar-días-consecutivos-desde-el-último-día/
  12. Entiendo que el tema esta cerrado, solo me dio una duda para el consultante @Fernando.O De acuerdo al ejemplo estás contando los pares e impares de un número seccionando dígito por dígito, pero ¿qué pasa con el 0? Es curiosidad solamente ¡Saludos!
  13. Excelente, entonces termino mi participación en la consulta.
  14. BOTON FILTROS AUTOMATICOS Y PERSONALIZADOS.xlsx
  15. Hola, en base a lo explicado, entiendo que necesitas que en la tabla se vaya ocultando los datos conforme vas combinando las opciones. Si pretendes usar la segmentación los datos una idea podría ser insertar una tabla dinámica y después crear los segmentos. Entonces tendrás dos opciones a definir: En la tabla qué columnas deben aparecer según los criterios de selección, o puedes quedarte solo con las segmentaciones porque te ira habilitando o deshabilitando los datos que existen en la tabla origen. Por otro lado si lo que buscas es que se filtre la tabla original puedes crear un filtro avanzado pero necesitas crear otra mini tabla para los criterios No se sabe en tu perfil si tienes Excel 365 pero es posible recibir más ayuda de algún experto interesado con las funciones ORDENAR(), FILTAR(), etc.
  16. Así como está el ejemplo si agregas un argumento a la fórmula que pusiste debería devolver el resultado que buscas: =BUSCARV(I4,I25:M36,2,FALSO)
  17. Complicado saber si tengo el conocimiento que sirva para recomendarle algo. Le recomiendo hacer una copia del libro, elimine los datos que no se necesitan para mostrar el ejemplo, elimine todos los condicionales, solo deje lo que le permita replicar el error que está viendo, guarde el libro como tipo binario.
  18. Es una idea espero sea de ayuda productos.xlsb
  19. Hola a ambos, Comparto lo que dice el maestro Victor, no está clara la consulta en cuanto a las definiciones, si tuviera que deducir las piezas son el resultado de la multiplicación posterior a los gramos, como los ejemplos son botanas es posible que sean cajas por piezas. Si es el caso, una opción es convertir ese texto a una operación matemática después de extraerlo. Para esto se puede definir una función de EVALUAR que no siempre esta disponible pero se puede mandar llamar en la definición de los nombres. Por otro lado hay múltiples "p" que estorban un poco, (Principe ChocoBlanco EmpBco 12p 126g FLOW MLA) así que yo recomendaría definir nombres y segmentar las funciones, no es complicado aunque tal vez requiera un poco de experiencia del usuario si quiere editar en lo futuro. Tal vez con eso sería suficiente dando un resultado similar a lo siguiente:
  20. Bueno con el ejemplo así como lo tienes, te puedo compartir que ese error de referencia circular es el que te ayuda a mantener la fecha y la hora "congeladas" podrías evitarlo usando una columna auxiliar para el vacío pero la fórmula AHORA() te cambiara el resultado cada que la hoja se calcule o cuando le des guardar. Sin VBA de por medio será esperar el aporte de algún maestro o usuario avanzado. Si cambias de opinión pasa el tema para la otra sección. Saludos
  21. Bueno, como dijera el Jack el destripador "vámonos por partes", ese temporal tiene un origen que es SAP. Hay algunos puntos que no están quedando claro y parece que el único medio que dispones es la WEB para que los usuarios tomen de ahí los datos de SAP ¿Qué versión de SAP tienes? Lo anterior también es confuso ¿tienen diferentes segmentos de VLAN o cómo? siempre hay una forma de poder comunicarse entre los equipos. ¿Mínimo están conectados al mismo Internet? Antes de usar herramientas externas a SAP, éste tiene sus propias soluciones ¿Qué datos son los que necesitan los demás usuarios? Entiendo que no quieran gastar licencias por el tema comercial pero si solo es leer podrías usar una API de SAP dependiendo de la versión que tengas, como el Service Layer, también está SAP WEB y otras. Si en tu lugar de trabajo tienen SAP (bajo licencia) debes tener un partner quien puede ofrecerte soluciones. Haciendo de lado la integridad de la información porque una vez exportados de SAP se vuelven editables y pierden confianza, además considerando que estás usando power query ¿por qué no usar el power BI? Este también se puede conectar con SAP. Identifica que software es el responsable de la información, origen y destino, eso debe facilitar el medio. ¡Saludines!
  22. En lo que usted sube el archivo en base a lo que menciona esta podría ser una idea: Suponiendo que la ruta esta en B1 Public Sub Listaynombra_Manual() Dim ruta As String ' Obtiene la ruta de la celda B1 ruta = ActiveSheet.Range("B1").Value ' Verifica si la ruta no está vacía If ruta <> "" Then ' Llama a la función List_Fols_Files con la ruta obtenida List_Fols_Files ruta Else MsgBox "La celda B1 está vacía. Por favor, ingresa una ruta válida.", vbExclamation End If End Sub Es importante resaltar que si la ruta es válida pero la carpeta no existe tendrá un error, en ese supuesto caso para evitar que la macro falle, puede agregar una verificación adicional para asegurar que la carpeta existe antes de llamar a la función. Puede hacer eso utilizando la función Dir en VBA, que verifica la existencia del elemento. También algo tan sencillo como escribir en la celdas de manera nvertidas las diagonales // puede causar error. Saludos cordiales a ambos.
  23. Este tema es similar a este otro "Arrastrar" número del indicador de columnas en el BUSCARV Es posible que la función COLUMNA() le sirva.