Todo se publica por Israel Cassales
-
¿Copias y pegas heredando todo como viene el portapapeles o pegas usando la opción de pegar como valores?
-
Si el registro de los datos es manual como indica, entonces antes de escribir el numero 2212-05-7 le recomiendo poner el apostrofe (coma alta (')) con eso debería ser suficiente. '2212-05-7
-
Me da gusto, concluyo mi participación en la consulta.
-
No hay problema, concluyo mi participación en el tema. Saludos.
-
¿Cómo? Si en este momento lo acabo de seguir, está público para cualquiera.
-
Pues no sé que decirte, a mí me funciona como debe ser. ENLACE
-
Con lo que me comparte me sigue pareciendo que es el separador de argumentos donde esta el problema.
-
Envío de mensajes whatsapp desde excel
tema contestó a Israel Cassales en Pakus Macros y programación VBA
Me parece muy interesante el trabajo que estás haciendo, de verdad. Recomendaciones de VBA pues están algunos enlaces en la web, solo activa tu traductor de ser necesario LEARN VBA EXCEL VBA PROGRAMMING INTRODUCCION A VBA -
Envío de mensajes whatsapp desde excel
tema contestó a Israel Cassales en Pakus Macros y programación VBA
Bueno la función es la clave en esta idea, por eso la pregunta de dónde la consultaba. Yo no tengo experiencia para pasar la credenciales de Google para verificar la agenda por esa razón te recomendaría una hoja de Excel que se llame por ejemplo Agenda de Google y que el rango esta en A:C, en A el número, en B el nombre y en C no sé, el puesto. Debería quedar algo así: Function ContactoEnAgenda(Tel As String) As Boolean Dim Agenda As Range Dim Celda As Range ' Define el rango de la hoja "Agenda de Google" (ajusta el nombre de la hoja según corresponda) Set Agenda = Worksheets("Agenda de Google").Range("A:C") ' Busca el número de teléfono en la columna A For Each Celda In Agenda.Columns(1).Cells If Celda.Value = Tel Then ContactoEnAgenda = True Exit Function ' Sale de la función si encuentra el número End If Next Celda ' Si no se encuentra el número, devuelve False ContactoEnAgenda = False End Function Una vez creado lo anterior el código completo debería funcionar así: Sub EnvíoMensajesW2() Dim Teléfono As String Dim Imagen As String Dim Texto As String Dim WhatsAppApp As Object ' Variable para la aplicación de WhatsApp ' Abre WhatsApp si no está abierto On Error Resume Next Set WhatsAppApp = GetObject(, "WhatsApp.Application") On Error GoTo 0 If WhatsAppApp Is Nothing Then Shell "C:\Program Files\WhatsApp\WhatsApp.exe", vbNormalFocus Application.Wait (Now + TimeValue("00:00:05")) ' Espera unos segundos para que WhatsApp se abra completamente End If For Each Celda In Envío.Range("Clientes[TELÉFONO]") Teléfono = Celda.Value Texto = Celda.Offset(0, 6).Value Imagen = Celda.Offset(0, 7).Value ' Verifica si el número está en la agenda de Google antes de enviar If ContactoEnAgenda(Teléfono) Then With Envío .Pictures.Insert(Imagen).Name = "ImagenW" .Shapes("ImagenW").Copy AppActivate "WhatsApp" Application.Wait (Now + TimeValue("00:00:03")) SendKeys "^f", True Application.Wait (Now + TimeValue("00:00:03")) SendKeys Teléfono, True Application.Wait (Now + TimeValue("00:00:03")) SendKeys "{Tab}", True Application.Wait (Now + TimeValue("00:00:03")) SendKeys "~", True Application.Wait (Now + TimeValue("00:00:03")) SendKeys Texto, True Application.Wait (Now + TimeValue("00:00:03")) SendKeys "~", True Application.Wait (Now + TimeValue("00:00:03")) SendKeys "^v", True Application.Wait (Now + TimeValue("00:00:03")) SendKeys "~", True .Shapes("ImagenW").Delete End With Else ' El número no está en la agenda de Google, pasa al siguiente End If Next Celda End Sub Function ContactoEnAgenda(Tel As String) As Boolean Dim Agenda As Range Dim Celda As Range ' Define el rango de la hoja "Agenda de Google" (ajusta el nombre de la hoja según corresponda) Set Agenda = Worksheets("Agenda de Google").Range("A:C") ' Busca el número de teléfono en la columna A For Each Celda In Agenda.Columns(1).Cells If Celda.Value = Tel Then ContactoEnAgenda = True Exit Function ' Sale de la función si encuentra el número End If Next Celda ' Si no se encuentra el número, devuelve False ContactoEnAgenda = False End Function Es lo que podría aportar. Haz pruebas a ver qué tal, también está la posibilidad de que algún usuario avanzado o Maestro aporte algo adicional. -
Envío de mensajes whatsapp desde excel
tema contestó a Israel Cassales en Pakus Macros y programación VBA
Hi, Una idea sería agregar una verificación al código con una función que valida si el número existe o no en la agenda, por otro ¿la agenda es una tabla de Excelo es la agenda del Windows? Podrías usar CountIf. Function ContactoEnAgenda(Tel As String) As Boolean ' Ejemplo: ' ContactoEnAgenda = (Application.WorksheetFunction.CountIf(Range("Agenda[TELÉFONO]"), Tel) > 0) End Function La función devuelve True si el número está en la agenda y False si no lo está. Y en tu código dentro del bucle For Each la mandas llamar. ' Verifica si el número está en la agenda antes de enviar If ContactoEnAgenda(Teléfono) Then With Envío .Pictures.Insert(Imagen).Name = "ImagenW" .Shapes("ImagenW").Copy Es lo que podría sugerir -
En ese caso debes definir y guardar la conexión en tu código, algo así: Sub ejecutarConsulta() Dim servidor As String Dim basedatos As String Dim usuario As String Dim contrasena As String servidor = "TUSERVER" basedatos = "TU BASE" usuario = "usuario" contrasena = "********" ' Definir la consulta Dim consulta As String consulta = "CONSULTA DE EJEMPLO"
-
Parece que es el separador de argumentos, tú usas punto y coma (;) mientras que yo solo la coma (,)
-
Lo lamento nuevamente porque no me gusta cuestionar la interpretación de los archivos que no son de mi propiedad; pero, desde (mi) lectura esas NO ANSWER no son falsas, es la misma llamada (sí) timbrando en destinos diferentes de los cuales ninguno contesto, tal como lo describe usted en su libro. Por curiosidad ¿Por qué importan las que no se contesten? ¿Es por algún tema de atención o servicio? Si es así, el reporte que comparte muestra que nadie lo atendió. Aunque como le comentaba no me corresponde cambiar la interpretación. Con la información adicional que comparte y si lo he entendido bien, un punto de partida para lograr lo que busca sería volver únicos los números de las llamadas. FUNCION UNICOS Después vaya discriminando por contestadas y no contestadas versus el número de veces que timbró, ya con ese dato, si usa la hora para restar las que sean las mismas podría contarlas y me parece que le deberían llevar al resultado que busca. Haga pruebas y regrese a comentar. Algo así para empezar...
-
Hi, Por lo que entiendo el valor buscado es compuesto y cambia regularmente concatenando textos de otras celdas. Aunque por otro lado, si el valor existe como tal en la hoja TAMAÑO MOLECULA me parece que (sí) podrías recortar el valor o volverlo único. La idea para que sirva dependerá de que el valor a buscar exista en la hoja donde se encuentran los datos, entendí que no estás usando IZQUIERDA o DERECHA porque entonces ya no lo encontrarías, ¿pero qué pasa si recortas el origen y el destino? Opciones para hacerlo hay varias, quitar los espacios, concatenar la primera letra, agregar un número, etc... Sin embargo, si no se desea modificar el origen y el destino, entonces la recomendación propia de Microsoft debería serte útil, usa INDICE con COINCIDIR, de acuerdo con la ayuda de la web, estas no tienen esas limitaciones. Entonces debería ser algo así: =INDICE(rango de la tabla; COINCIDIR(valor_buscado; rango de la fila; 0); COINCIDIR(valor_buscado; rango de la columna; 0))
-
Lo lamento, trate de aportar algo pero me quedan cosas a la suposición y suponer no es lo más adecuado. O tal vez simplemente no entendí. ¿Como determina usted que (sí) se contesto la llamada, si el origen (su informe) le dice que no? Parece que en su configuración tiene un carrusel, donde (si) no se contesta en algún destino, pasa a otro y así hasta que alguien conteste o se pierda la llamada. En ese ejemplo se ve que paso por 5 antes de obtener una respuesta; entonces su software al no tener algún consumo en el tiempo se lo muestra como 0s. Parece que usted determina lo contrario si el número de origen, la hora y la fecha de algún bloque se obtuvo alguna respuesta, entonces ¿por qué todo el bloque cuenta como llamada realizada? Porque en ese caso uno podría creer que lo más sencillo es filtrar por ANSWERED y tendría el resultado ordenado por llamadas completas sin realizar nada más. Esas incógnitas me impiden ser de utilidad en su consulta, tal vez si hiciera un ejemplo de cómo quiere que quede el resultado y no solo mostrar el origen de la información, sino como lo necesita, entonces es posible que algún miembro avanzado del foro o Maestro le puedan aportar alguna ayuda más específica.
-
Me parece que lo que usted quiere es filtrar, así que participaré con esta idea. =FILTRAR(RECALL!$A$3:$H$7,RECALL!$G$3:$G$7='LISTADO DE RESULTADOS'!C2) Si le sirve, es cuestión de que la edite a su gusto en su libro.
-
Calculadora de partidos de un torneo mixto de padel
tema contestó a Israel Cassales en oscarfm Excel General
Excelente propuesta Maestro @John Jairo V yo tuve problemas para aterrizar el cálculo en una sentencia. -
Calculadora de partidos de un torneo mixto de padel
tema contestó a Israel Cassales en oscarfm Excel General
Mira intente otro ejemplo: El problema aquí no es crear esa macro que no esté considerando cada partido dos veces, ejemplo: una vez cuando el HOMBRE_01 juega con la MUJER_01 contra el HOMBRE_02 y la MUJER_02, y otra vez cuando el HOMBRE_02 juega con la MUJER_02 contra el HOMBRE_01 y la MUJER_01. Entonces sí, son efectivamente el mismo partido, por lo que deberíamos contarlos solo una vez y discriminarlos, ese considero es el detalle. En tu caso, estás buscando un “diseño de torneo de parejas mixtas”, donde cada hombre juega con cada mujer exactamente una vez, y cada pareja juega contra cada una de las otras parejas exactamente una vez. Esto es un problema más de matemáticas que de programación, y aunque existen algoritmos para resolverlo algunos son bastante complejos y pueden ser difíciles de implementar en VBA. Por ejemplo buscando en Internet lo tuyo se considera un problema de combinatoria y se podría resolver con un algoritmo conocido como “round-robin”, lo que habría que hacer es crearlo en VBA pero en el contexto de tu consulta sería de una manera un poco diferente. En lugar de seleccionar elementos de un grupo para procesar, estamos generando todas las combinaciones posibles de parejas de jugadores para los partidos de padel. Cada jugador juega con cada otro jugador exactamente una vez, lo cual es similar al concepto de “Round-Robin” de dar a cada elemento en un grupo una oportunidad equitativa. Así que en el adjunto que te mando inicie con HOMBRE_01 y sus combinaciones, luego HOMBRE_02 y sus combinaciones, sería seguirlo construyendo con los 10 que hacen falta. Pero solo es una idea, esperando te ayude a lograr lo que buscas ya que una vez entendido los ejemplos que mencionas de momento no puedo aportar algo adicional. Mixto.xlsb -
Calculadora de partidos de un torneo mixto de padel
tema contestó a Israel Cassales en oscarfm Excel General
Mixto.xlsb -
Mis mejores deseos para cada uno de los que participan en el foro, consultantes, miembros, maestros, moderadores, administradores... Y a cada quien que pase por aquí. ¡Feliz Año 2024! Saludines
-
Tu libro Consulta de Afiliados AFP - PTO ILO.xlsx
-
En base a lo explicado participo con la siguiente propuesta que debería poder cumplir con lo expuesto. Saludines. =CONCATENAR(DERECHA(D4,LARGO(D4)-HALLAR(" ",D4,HALLAR(" ",D4)+1)), " ", IZQUIERDA(D4,HALLAR(" ",D4,HALLAR(" ",D4)+1)-1)) Por favor solo cambia tu separador de argumentos de (;) a (,)