Saltar al contenido

Insertar datos de varios libros


Recommended Posts

publicado

Hola,la verdad es que soy bióloga y mis conocimientos en programación son muy básicos, por lo que solicito me ayuden. Tengo que capturar datos de dos libros diferentes de excel, uno es "CA" y el otro es "UMAS" .De "CA" tengo que capturar comun,cientifico y grupo, y de "UMAS" total.

Por lo que he creado un formulario, pero al momento de buscar los animales en "CA" me dice que no existen y al buscar en "UMAS" solo me pone lo de la celda D14. Además el problema que tengo es que algunos animales están escritos con mayúsculas en un libro y en el otro no, por lo que necesito que sin importar si esta con mayúsculas o no me reconozca los datos y me los busque y si es que en "CA" no esta el animal del libro "UMAS" en el libro "UMAS" me marque el nombre común con rojo.

También me marca error 9 para insertar los datos en el libro "EXT" que es donde tengo mi formulario. De antemano agradezco su ayuda y anexo los archivos .

CA.xls

EXT.xls

UMAS.xls

  • 2 weeks later...
publicado

Buenas tardes, le hice una ajuste a lo que escribiste espero te sirva. si de pronto te genero un error al buscar es por la extención del archivo. en el codigo estaba como .xlsx y los archivos que envías están en .xls dado caso solo es cuestión de agrear la letrica que falta.

adjunto los tres archivos pero basicamente solo necesitas el EXT.xls que es el que tiene las modificaciones en el código.

Adios.

--

Freddy'S

CA.xls

EXT.xls

UMAS.xls

Invitado jorgetchake
publicado

Estimada Donas,...

He mirado un poco tu código,... veo que tienes mucho por hacer,... éste mundo de Excel es tan amplio que se podría encarar de diferentes forma cualquier solución.

Te sugiero que con calma veas los cambios que hice en el CommandButton3 (botón Buscar).

With Workbooks("CA.xls").Sheets(1)
ult = .Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To ult
If UCase(.Cells(i, 1)) = UCase(TextBox2.Text) Then
''buscar = True
TextBox3 = .Cells(i, 2)
TextBox5 = .Cells(i, 3)
TextBox6 = "UMAS"
TextBox7 = "EJEMPLARES"
GoTo encontrado
End If

Next i
MsgBox "No existe la especie"
GoTo fuera
End With
'' If buscar = False Then
'' MsgBox "No existe la especie"
''End If
encontrado:
MsgBox "De aquí en adelante debes continuar adptando tu código"
fuera:
Call CommandButton2_Click
Exit Sub
[/CODE]

Lo modifiqué para que tengas una referencia aparte de lo que te ayude el propio AyudaExcel.

-Como anticipó el amigo Freddy tienes mal la extensión del archivo, es .xls

-No es necesario activar la hoja de donde tomarás los datos para el formulario. En el adjunto verás que la hoja se mantiene,... es decir no cambia a la CA.

-He usado el With (lee la Ayuda) es una importante función que te ayuda a no escribir tanto,... de hecho a reducir eventuales errores de digitación.

-Tu consulta sobre las mayúsculas/minúsculas,... se resuelve con UCase y LCase (ver ayuda) que usé en el If .

-Eliminé tu variable buscar,... ver el If ....then

Evidentemente ésto pretende ser una muestra de como podrías adaptar tu código.

Te invito a que estudies otras opciones como el uso de los Combobox para seleccionar tus datos y evitar la digitación,... si usaras un Combobox, su propia lógica te indica si existe o no.

Espero te haya orientado.

Cordiales saludos

publicado

Hola, tengo otro problema. La verdad lo que ambos me dijeron me ayudo mucho pero si en el archivo UMAS el nombre común tiene ** al principio, como por ejemplo (**Guacamaya ala verde), en el formulario no lo reconoce, es decir, si en el formulario en común pongo Guacamaya verde me dice que no existe la especie.

Otra pregunta es posible que el formulario reconozca las diferentes formas de nombrar a un animal comúnmente, como por ejemplo en un archivo diga venado axis y en el otro ciervo axis y el formulario sepa que son el mismo animal y que cuando de click en buscar en el formulario me de grupo,científico,origen,asunto y año1. Otra vez muchas gracias por su apoyo

publicado

Hola nuevamente, prometo que esta es la ultima ves que pregunto.Si el archivo UMAS tiene repetidos los animales como es el caso de Puercoespin africano y Llama(tengo animales que se repiten mas de dos veces), como le hago para que en el formulario en automático me ponga en Año1 el total de la suma de ese animal.

Y por último como le hago para que según el grupo aparte de insertar los datos en la Hoja1 me los inserte en otras hojas, es decir,los exóticos en la Hoja2,aves en la Hoja3 y mamíferos en la Hoja 4. Con el mismo formato de la Hoja1.

Muchas muchas gracias de antemano-

publicado

Perdón pero se me olvido preguntar si lo anterior se puede hacer para el archivo UMAS1(el cual anexo), en donde dependiendo de la columna "Tipo" me sume , es decir, los que en Tipo dicen si y sean de la misma especie se sumen y el resultado lo ponga en el formulario en Año1 y si no dice nada en la columna Tipo se sumen los de la misma especie y el resultado lo ponga en el formulario en Año1(como es el caso de Llama). ¿Hay manera de preguntar al usuario cuales quiere que sume los que dicen si o los que no dicen nada de la especie que escriba en COMUN?. Y como le hago para que en el formulario en ASUNTO me aparezca ejemplar o animal según el archivo UMAS1, es decir, si en la columna "Tipo" no tiene nada me ponga animal y si tiene escrito si me ponga especie y de acuerdo a esto no solo me lo inserte en la Hoja1, es decir, si dice especie me lo inserte en la Hoja1 y en la Hoja2 (con el mismo formato de la Hoja1) y si dice animal me lo inserte en la Hoja1 y en la Hoja3(con el mismo formato de la Hoja1)

Y otra cosa sigue sin reconocer los animales que tienen **(como el caso de la guacamaya ala verde)en el archivo de UMAS ya que cuando le doy buscar solo me reconoce los datos del archivo CA, es decir, si en el formulario en COMUN pongo guacamaya ala verde me dice que no existe la especie o me pone nadamas los datos del archvo CA.

Ahora si juro y perjuro que ya no pregunto MUCHAS GRACIAS!!!

UMAS1.xls

UMAS.xls

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Current Donation Goals

    • Raised 0.00 EUR of 130.00 EUR target
  • Archivos

  • Estadísticas de descargas

    • Archivos
      187
    • Comentarios
      97
    • Revisiones
      29

    Más información sobre "Un juego del Rabino en Excel"
    Última descarga
    Por pegones1

    2    1

  • Crear macros Excel

  • Mensajes

    • Que tal nuevamente,  adjunto una solución alternativa: =MAX(A:.A)-BYROW(F4:.AK20,LAMBDA(r,BUSCAR(2,1/(r=0),F3:.AK3))) Cabe mencionar que esta solución requiere funciones nuevas como RECORTAR.RANGO. CONTADOR FINAL (Solucion).xlsb
    • Buenos días,  espero se encuentren bien de salud compañeros, Favor me podrían ayuda con lo siguientes como se podría hacer cuando tengo una tabla dinámica que  amedida que se aumente las columnas fechas con data un formula que se coloco al final busque o analice siempre la ultima fila y columna de la fecha. Coloco un ejemplo
    • @JSDJSD Excelentes, GRACIAS POR TU SOPORTE , me ayudo demasiado es exactamente lo que quería. 5 ESTRELLAS
    • 'Opción 1 Sub FiltrarSKUPorFecha(): Application.ScreenUpdating = False Dim ultimaFila As Long, fila As Long Dim diccionarioSKU As Object Dim listaEliminar As Object Dim fechaActual As String, fechaSiguiente As String Dim f As Variant With Sheets("Consolidado") ultimaFila = .Cells(.Rows.Count, 1).End(xlUp).Row ' Crear diccionarios para comparar SKU y almacenar filas a eliminar Set diccionarioSKU = CreateObject("Scripting.Dictionary") Set listaEliminar = CreateObject("Scripting.Dictionary") ' Recorrer desde la primera fila hasta la penúltima For fila = 2 To ultimaFila - 1 fechaActual = .Cells(fila, 1).Value fechaSiguiente = .Cells(fila + 1, 1).Value ' Solo comparar la fecha actual con la siguiente (inmediatamente superior) If fechaActual <> fechaSiguiente Then diccionarioSKU.RemoveAll ' Limpiar el diccionario antes de llenarlo ' Guardar los SKU de la fecha siguiente (solo de la siguiente) For f = fila + 1 To ultimaFila If .Cells(f, 1).Value <> fechaSiguiente Then Exit For diccionarioSKU(.Cells(f, 2).Value) = 1 Next f ' Revisar los SKU de la fecha actual y marcar los que deben eliminarse For f = fila To 2 Step -1 If .Cells(f, 1).Value <> fechaActual Then Exit For ' Solo eliminar si el SKU no está en la fecha siguiente If Not diccionarioSKU.exists(.Cells(f, 2).Value) Then listaEliminar(f) = 1 ' Marcar fila para eliminar después End If Next f ' Ya no es necesario seguir buscando después de comparar la primera y la siguiente fecha Exit For End If Next fila ' Eliminar las filas marcadas sin afectar el bucle principal For Each f In listaEliminar.keys .Rows(f).Delete Next End With MsgBox "Completado correctamente.", vbInformation End Sub 'Opción 2 Sub FiltrarSKUPorFecha1(): Application.ScreenUpdating = False Dim ultimaFila As Long, fila As Long Dim listaEliminar As Collection Dim fechaActual As String, fechaSiguiente As String Dim f As Variant, i As Long Dim SKUExiste As Boolean With Sheets("Consolidado") ultimaFila = .Cells(.Rows.Count, 1).End(xlUp).Row ' Inicializar la colección para marcar las filas a eliminar Set listaEliminar = New Collection ' Recorrer desde la primera fila hasta la penúltima For fila = 2 To ultimaFila - 1 fechaActual = .Cells(fila, 1).Value fechaSiguiente = .Cells(fila + 1, 1).Value ' Solo comparar la fecha actual con la siguiente (inmediatamente superior) If fechaActual <> fechaSiguiente Then ' Revisar los SKU de la fecha actual y marcar los que deben eliminarse For f = fila To 2 Step -1 If .Cells(f, 1).Value <> fechaActual Then Exit For ' Comprobar si el SKU está en la fecha siguiente SKUExiste = False For i = fila + 1 To ultimaFila If .Cells(i, 1).Value <> fechaSiguiente Then Exit For If .Cells(i, 2).Value = .Cells(f, 2).Value Then SKUExiste = True Exit For End If Next i ' Si el SKU no se encuentra en la fecha siguiente, marcar para eliminar If Not SKUExiste Then listaEliminar.Add f ' Marcar fila para eliminar después End If Next f ' Ya no es necesario seguir buscando después de comparar la primera y la siguiente fecha Exit For End If Next fila ' Eliminar las filas marcadas sin afectar el bucle principal For Each f In listaEliminar .Rows(f).Delete Next f End With MsgBox "Completado correctamente.", vbInformation End Sub   TABLA ELIMINAR.xlsm
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.