valores valor una saber rango que otro numero lista existe esta entre encuentra devolver determinar dentro como buscar excel vba excel-vba excel-formula vlookup

una - Encontrar si el valor existe en otra hoja de cálculo(Excel)



saber si un valor esta dentro de un rango (1)

Tengo una macro vinculada a un evento de clic de botón en mi hoja de cálculo de Excel. Cuando se FeedSampleForm este evento, necesito ver si el valor en mi hoja de trabajo FeedSampleForm Range("A5:B5").Value existe en cualquier lugar de la columna B de mi otra hoja de trabajo FeedSamples .

¿Puede alguien ayudarme con esto? Apenas soy un usuario cuando se trata de Excel, y esta es la primera vez que "desarrollo" con él.

EDITAR :

Código actual a continuación. Esto es para diferentes procedimientos de guardado dependiendo de si guarda un nuevo registro o lo guarda después de editar un registro creado previamente.

Para datos de ejemplo, digamos que estoy buscando "FeedSampleForm" .Range ("A5: B5"). Valor que es "SR0238", necesito ver si "SR0238" existe en la columna B en la hoja de trabajo "FeedSamples", que actualmente contiene "SR0237" - "SR0252". Si no existe, puedo usar el mismo código que mi función Agregar registro, pero si lo hace, tengo que escribir en esa fila exacta al guardar.

Sub SaveInspection() If modeAdd = True Then ''Labeler Reg. No. Worksheets("FeedSamples").Range("A1").End(xlDown).Offset(1, 0).value = Range("L3:M3").value ''Feed Report No. Worksheets("FeedSamples").Range("B1").End(xlDown).Offset(1, 0).value = Range("A5:B5").value ''Product No. / Class No. Worksheets("FeedSamples").Range("C1").End(xlDown).Offset(1, 0).value = Range("C5").value Worksheets("FeedSamples").Range("E1").End(xlDown).Offset(1, 0).value = Range("D5").value Worksheets("FeedSamples").Range("F1").End(xlDown).Offset(1, 0).value = Range("E5").value ''Description No. Worksheets("FeedSamples").Range("H5").End(xlDown).Offset(1, 0).value = Range("F5").value Worksheets("FeedSamples").Range("I5").End(xlDown).Offset(1, 0).value = Range("G5").value Worksheets("FeedSamples").Range("J5").End(xlDown).Offset(1, 0).value = Range("H5").value Worksheets("FeedSamples").Range("K5").End(xlDown).Offset(1, 0).value = Range("I5").value ''Possessor No. Worksheets("FeedSamples").Range("L1").End(xlDown).Offset(1, 0).value = Range("J5:K5").value ''Date Worksheets("FeedSamples").Range("M").End(xlDown).Offset(1, 0).value = Range("L5:M5").value ''Possessor Name Worksheets("FeedSamples").Range("AB1").End(xlDown).Offset(1, 0).value = Range("A8:F8").value ''Possessor Address Worksheets("FeedSamples").Range("AC1").End(xlDown).Offset(1, 0).value = Range("A10:F10").value ''Possessor City/St Worksheets("FeedSamples").Range("AD1").End(xlDown).Offset(1, 0).value = Range("A11:E11").value ''POssessor Zipcode Worksheets("FeedSamples").Range("AE1").End(xlDown).Offset(1, 0).value = Range("F11").value ''Labeler Name Worksheets("FeedSamples").Range("AF1").End(xlDown).Offset(1, 0).value = Range("H8:M8").value ''Labeler Address Worksheets("FeedSamples").Range("AG1").End(xlDown).Offset(1, 0).value = Range("H10:M10").value ''Labeler City/St Worksheets("FeedSamples").Range("AH1").End(xlDown).Offset(1, 0).value = Range("H11:L11").value ''Labeler Zipcode Worksheets("FeedSamples").Range("AI1").End(xlDown).Offset(1, 0).value = Range("M11").value ''Product Name Worksheets("FeedSamples").Range("AJ1").End(xlDown).Offset(1, 0).value = Range("A13:I13").value ''1. Med Worksheets("FeedSamples").Range("AK1").End(xlDown).Offset(1, 0).value = Range("J13:K13").value ''2. Non-Med Worksheets("FeedSamples").Range("AL1").End(xlDown).Offset(1, 0).value = Range("L13:M13").value ''No. Bags/Loc. Sampled ''Total No. Guarantees Worksheets("FeedSamples").Range("P").End(xlDown).Offset(1, 0).value = Range("C15:E15").value ''Flag Sample Worksheets("FeedSamples").Range("Q").End(xlDown).Offset(1, 0).value = Range("F15:G15").value ''Sample Def. Worksheets("FeedSamples").Range("R").End(xlDown).Offset(1, 0).value = Range("H15:I15").value ''Compliance ''Duplicate ''Bag Tag Mark or Code Worksheets("FeedSamples").Range("U").End(xlDown).Offset(1, 0).value = Range("A17:H17").value ''On Hand Worksheets("FeedSamples").Range("V").End(xlDown).Offset(1, 0).value = Range("I17:K17").value ''Approx. Wt/Lbs Worksheets("FeedSamples").Range("W").End(xlDown).Offset(1, 0).value = Range("L17:M17").value ''Remarks Worksheets("FeedSamples").Range("AA").End(xlDown).Offset(1, 0).value = Range("A19:M19").value ''Sample Taken From ''Sample Method ''Form ''Probe Size ''Product No./Class No. Worksheets("FeedSamples").Range("D").End(xlDown).Offset(1, 0).value = Range("A23:C23").value modeAdd = False End If If modeEdit = True Then ''find the record in "datatable" and save over fields. Dim result As Variant Dim sheet As Worksheet Set sheet = ActiveWorkbook.Sheets("FeedSamples") ''Range("O3").Formula = "=IF(ISERROR(MATCH(Range("A5:B5").Value, sheet.Range("B:B"), 0)), "Not Found", "Value found on row " & MATCH(Range("A5:B5").Value, sheet.Range("B:B"), 0))" ''Range("O3").Formula = "=IF(ISERROR(MATCH(12345,A:A,0)),"Not Found","Value found on row " & MATCH(12345,A:A,0)))" result = Application.WorksheetFunction.VLookup(Range("A5:B5").value, sheet.Range("B2:B25000"), 2, False) ''Throws Object Required Error MsgBox result modeEdit = False allowNav = True End If End Sub


Una manera muy fácil es declarar el rango en el que desea buscar y el valor que desea encontrar.

Sub findValue() Dim xlRange As Range Dim xlCell As Range Dim xlSheet As Worksheet Dim valueToFind valueToFind = "MyValue" Set xlSheet = ActiveWorkbook.Worksheets("Sheet2") Set xlRange = xlSheet.Range("B1:B10") For Each xlCell In xlRange If xlCell.Value = valueToFind Then ''Do Something End If Next xlCell End Sub

Supongo que su rango de ("A5: B5") es una celda combinada porque indicó que contenía un solo valor. Las celdas combinadas solo pueden ser referenciadas por la celda "arriba a la izquierda" dentro de la fusión (o al menos así es como pienso). Por lo tanto, su rango fusionado de ("A5: B5") puede denominarse justo ("A5"). De todos modos, aquí hay una versión modificada del método anterior que es más adecuada para sus necesidades.

Sub findValue(ByVal valueToFind As String) Dim xlRange As Range Dim xlCell As Range Dim xlFormSheet As Worksheet Dim xlSamplesSheet As Worksheet Dim iLastRow As Integer Dim iRow As Integer Dim bFound As Boolean bFound = False Set xlFormSheet = ActiveWorkbook.Worksheets("FeedSampleForm") Set xlSamplesSheet = ActiveWorkbook.Worksheets("FeedSamples") iLastRow = xlSamplesSheet.Range("B1").End(xlDown).Row Set xlRange = xlsamplesheet.Range("B1:B" & iLastRow) For Each xlCell In xlRange If xlCell.value = valueToFind Then bFound = True ''<-- The value was found iRow = xlCell.Row ''<-- Here is the row that the value was found on End If If bFound Then Exit For ''<-- Optional: Exit the for loop once the value is found the first time Next xlCell End Sub