Saltar al contenido

Coincidir texto/celda entre 2 hojas diferentes


proletario

Recommended Posts

publicado

Buenas a todos 

Necesitaría vuestra ayuda estoy desesperado ya que no encuentro la formula o manera de hacer coincidir 2 archivos/hojas de 2 mayoristas diferentes (en lo posible), os explico:

-Son 2 archivos de diferentes proveedores que venden la misma linea de productos y necesito copiar una celda/texto de la columna referencia a la otra hoja por coincidencia , yo los añado en 2 hojas digamos HOJA 1 (mayorista 1)- HOJA 2 (mayorista2) necesito hacer coincidir cualquier linea de texto de la HOJA 2 ref/nombre/descripción..etc (cualquier valdría) en la HOJA 1 y en esta misma hoja la coincidencia que encuentre añada en una celda la referencia de la HOJA 2 en la HOJA 1.

Estaría muy agradecido que me ayudaran ya que probado de todo con BUSCAR,FORMULAS....por internet y soy muy torpe con excel ...?

Os adjunto archivos de ejemplo.

Muchísimas gracias !!!

 Un saludo

 

 

 

mayoristas.xlsx

publicado

Hola, creo que no me he explicado bien. Voy a volver a intentarlo.

Tengo 2 proveedores diferentes pero que comercializan el mismo tipo de artículos: consumibles compatibles o reciclados para impresoras. Cada uno tiene su descripción, sus ID y sus Referencias de articulo, aunque normalmente hablan del mismo producto.

Por cuestiones  de búsqueda, necesito hacer coincidir las ID de cada proveedor en la misma descripción de producto.

pongo un ejemplo de lo que quiero decir, a ver si se ve mas claro.

El mayoritaria 1 tiene la ID 1715 que corresponde al DR1050

El mayorista 2 tiene la ID 1016-01 que también corresponde al DR1050 

Necesito hacer que con una búsqueda, todas o las máximas posibles referencias del mayorista 1 añadan en una columna adicional las ID del mayorista 2 que corresponde al mismo articulo. Es posible, si hace falta para facilitar la búsqueda, pasar el texto de la hoja 2 a columnas, para hacer coincidir mas fácilmente la descripción de la hoja 1

ID mayorista 1 Referencia(nº) Descripción ID MAYORISTA 2
1715 XBDR1050CE DR1050 1016-01
1716 XBDR130R DR-130CL 1032-1
1717 XBDR2000CE DR2000 - DR350 / DR2005 1011
   

gracias de antemano por vuestra ayuda y sobre todo por vuestra paciencia.

 

 

publicado

Hola proletario (e Isidro)

Proletario,  

Tienes varios puntos en contra.....

No puedes coincidir un texto que está incluido en otro.

No puedes coincidir varios texto (tipo DR2000 - DR350 / DR2005),  y que cualquiera de ellos esté incluido dentro de otro texto.

lo mismo para esto: 

1 bobina para fax, reemplaza a PC202RF PC204RF 

 

Pensé en que separando cada texto a buscar en diferentes columnas, se podría conseguir algo, pero tampoco...  como buscar DR230CL en DR-230 , por otro lado DR-230 en la hoja 2, hay varios, no solo uno.

Pueda que alguien encuentre una forma, tal vez con macros ¿....?..., lo dudo..   , tal vez debas crear un código único por cada item o extraerlos en una columna a parte.. y en cada lista.. de esta forma no tendrás error en los resultados.... en una lista el código a buscar, en la otra lista el código buscado, deben ser iguales...

 

saludos,

Silvia

publicado

Otro ejemplo es DR200  no es igual que DR2000 , con la de Gerson sale 1011

a no ser que lo sea..

Gerson , hasta ahora no se porque no puedo ingresar tu formula, tuve que volver a armarla

=INDICE(Hoja2!$B$1:$B$1765,COINCIDIR("*"& SI.ERROR(IZQUIERDA(C2,HALLAR(" ",C2)-1),C2)&"*",Hoja2!$A$1:$A$1765,),)

?

publicado

Mi aporte:

Sub Buscar_LBV()
Dim Celda1 As Range, Celda2 As Range, Uf1&, Uf2&
    Uf1 = Hoja1.Range("A" & Rows.Count).End(xlUp).Row
    Uf2 = Hoja2.Range("A" & Rows.Count).End(xlUp).Row
    For Each Celda1 In Hoja1.Range("C2:C" & Uf1)
        Set Celda2 = Hoja2.Range("A1:A" & Uf2).Find(Celda1)
        If Not Celda2 Is Nothing Then
            Celda1.Offset(0, 1) = Celda2.Offset(0, 1)
        End If
    Next Celda1
End Sub

Saludos a todos

publicado

Hola de nuevo y gracias a todos por el interés y las respuestas

Doy por supuesto que va a ser prácticamente imposible que se puedan asignar todas las ID de una hoja a la otra. La idea es que lo hagan todas las posibles para ahorrar faena, el resto no va a quedar mas remedio que hacerlo a mano.

Por si sirve de algo: Lo valores de las celdas donde hay varias referencias, se pueden convertir en columnas, para hacer la busqueda del articulo del mayorista 1, en el mayorista 2 mas facilmente. O sea, buscar en varias columnas, si coincide el articulo.

Hay varios referencias en la misma celda, porque puede ser un articulo que es compatible con varias referencias y estan todas ellas en el mismo ID

tambien se pueden quitar guiones tipo dr-230 y dejarlo en dr230 para hacerlo mas facil, si hace falta.

Es posible que algún articulo se repita, pero porque son diferentes colores, es decir, por ejemplo, la ref. C542DN se repite 4 veces, porque son negro, cyan , magenta y amarillo, pero lo pone en texto, no cambiando la referencia.

Hay articulos que se parecen mucho, dr200 y dr2000, pero son diferentes.

 

publicado
Hace 29 minutos , proletario dijo:

Hola de nuevo y gracias a todos por el interés y las respuestas

Doy por supuesto que va a ser prácticamente imposible que se puedan asignar todas las ID de una hoja a la otra. La idea es que lo hagan todas las posibles para ahorrar faena, el resto no va a quedar mas remedio que hacerlo a mano.

Asi es, por ejemplo con la formula que te envié, puedes usar para diferentes columnas, solo modificala, para que busque segun la columna

Ademas debes saber que Excel, es mas eficiente, si existe cierto orden

 

Saludos 

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

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      188
    • Comentarios
      98
    • Revisiones
      29

    Más información sobre "Cambios en el Control Horario"
    Última descarga
    Por pegones1

    4    1

  • Crear macros Excel

  • Mensajes

    • Hola, veo que tienes 365, así que esta forma funcionará   Almacen.xlsx
    • Buenos días  @LeandroA espero estes bien Tengo un caso idéntico al planteado en la siguiente pregunta: Sin embargo, a diferencia de quien planteo originalmente la pregunta al correr el código no obtengo ningún resultado podrían ayudarme a resolver este inconveniente y que al hacer click en el Botón Guardar (CommandButton3) del Formulario RCS (frmrcs) el archivo pdf quede configurado con orientación vertical, márgenes superior, inferior, derecho e izquierdo = 1 y en página tamaño carta. Si acaso influye uso Microsoft Excel LTSC MSO (versión 2209 Compilación16.0.1.15629.20200) de 64 bits Mucho le sabre agradecer la ayuda que me pueda dar  RCS PRUEBA - copia.xlsm
    • @JSDJSDCon gusto mi estimado Para la opción 1: Sub Surtirhastadondealcanse() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(1) Dim filaInicio As Integer: filaInicio = 4 Dim filaFin As Integer: filaFin = 7 Dim colInventario As Integer: colInventario = 2 Dim colSolicitudesInicio As Integer: colSolicitudesInicio = 4 ' Columna C Dim colResultadoInicio As Integer: colResultadoInicio = 9 ' Columna I Dim colTotalSurtido As Integer: colTotalSurtido = 12 ' Columna L Dim colFinalInventario As Integer: colFinalInventario = 13 ' Columna M Dim numClientes As Integer: numClientes = 3 Dim fila As Integer, i As Integer For fila = filaInicio To filaFin Dim inventario As Double inventario = Val(ws.Cells(fila, colInventario).Value) Dim solicitudes(1 To 3) As Double Dim surtido(1 To 3) As Variant Dim totalSurtido As Double: totalSurtido = 0 ' Leer solicitudes For i = 1 To numClientes If IsNumeric(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Then solicitudes(i) = CDbl(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Else solicitudes(i) = 0 End If surtido(i) = "POR FALTA STOCK" Next i ' Surtir de acuerdo al inventario disponible For i = 1 To numClientes If solicitudes(i) > 0 Then If inventario >= solicitudes(i) Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) ElseIf inventario > 0 Then surtido(i) = inventario totalSurtido = totalSurtido + inventario inventario = 0 Else surtido(i) = "POR FALTA STOCK" End If End If Next i ' Escribir resultados en las columnas correspondientes para cada cliente For i = 1 To numClientes With ws.Cells(fila, colResultadoInicio + i - 1) If surtido(i) = "POR FALTA STOCK" Then .Value = surtido(i) .Font.Color = vbRed Else .Value = surtido(i) .Font.Color = vbBlack End If End With Next i ' Escribir total surtido y existencia final ws.Cells(fila, colTotalSurtido).Value = totalSurtido ws.Cells(fila, colFinalInventario).Value = inventario Next fila MsgBox "Resultado surtido cargado con éxito...", vbInformation End Sub Para la opción 2:   Sub surtirenpartesiguales() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(1) Dim filaInicio As Integer: filaInicio = 13 Dim filaFin As Integer: filaFin = 16 Dim colInventario As Integer: colInventario = 2 Dim colSolicitudesInicio As Integer: colSolicitudesInicio = 4 ' Columna C Dim colResultadoInicio As Integer: colResultadoInicio = 9 ' Columna I Dim colTotalSurtido As Integer: colTotalSurtido = 12 ' Columna L Dim colFinalInventario As Integer: colFinalInventario = 13 ' Columna M Dim numClientes As Integer: numClientes = 3 Dim fila As Integer, i As Integer For fila = filaInicio To filaFin Dim inventario As Double inventario = Val(ws.Cells(fila, colInventario).Value) Dim solicitudes(1 To 3) As Double Dim surtido(1 To 3) As Variant Dim totalSurtido As Double: totalSurtido = 0 Dim totalPedido As Double: totalPedido = 0 ' Leer solicitudes For i = 1 To numClientes If IsNumeric(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Then solicitudes(i) = CDbl(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) totalPedido = totalPedido + solicitudes(i) Else solicitudes(i) = 0 End If surtido(i) = 0 Next i ' Si hay suficiente inventario, surtir lo que el cliente pide If inventario >= totalPedido Then For i = 1 To numClientes If solicitudes(i) > 0 And inventario >= solicitudes(i) Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) End If Next i Else ' Reparto base igualitario Dim baseSurtido As Long baseSurtido = Int(inventario / numClientes) For i = 1 To numClientes If solicitudes(i) > 0 Then If solicitudes(i) <= baseSurtido Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) Else surtido(i) = baseSurtido inventario = inventario - baseSurtido totalSurtido = totalSurtido + baseSurtido End If End If Next i ' Repartir sobrante restante uno por uno, respetando lo pedido Do While inventario > 0 For i = 1 To numClientes If surtido(i) < solicitudes(i) Then surtido(i) = surtido(i) + 1 totalSurtido = totalSurtido + 1 inventario = inventario - 1 If inventario = 0 Then Exit For End If Next i Loop End If ' Escribir resultados en las columnas correspondientes para cada cliente For i = 1 To numClientes With ws.Cells(fila, colResultadoInicio + i - 1) If surtido(i) = 0 Then .Value = "POR FALTA STOCK" .Font.Color = vbRed Else .Value = surtido(i) .Font.Color = vbBlack End If End With Next i ' Escribir total surtido y existencia final ws.Cells(fila, colTotalSurtido).Value = totalSurtido ws.Cells(fila, colFinalInventario).Value = inventario Next fila MsgBox "Resultado surtido cargado con éxito...", vbInformation End Sub Saludos, Diego
    • Buenos dias.  Estoy trabajando en una hoja para poder llevar un control de un pequeño almacén.  Tengo un pedido con varias líneas y "lotes" y necesito sacar las ubicaciones que coincidan con la referencia y lote que pone en el pedido. El problema viene cuando tengo la misma referencia y mismo lote en ubicaciones diferentes y necesito sacar la información en columnas diferentes. No se si  me he explicado bien, pero creo que con el ejemplo adjunto se entiende mejor. Agradecería mucho si me pudieran ayudar  Libro1.xlsx
    • Exelente solución mil gracias 
  • 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.