Finden, Wenn der Wert Vorhanden ist, auf anderen Arbeitsblatt (Excel)
Ich habe ein makro mit einer Schaltfläche click-Ereignis auf meinem Excel-Arbeitsblatt. Wenn dieses Ereignis ausgelöst wird, muss ich sehen, ob der Wert auf meinem Arbeitsblatt FeedSampleForm
Range("A5:B5").Value
an einer beliebigen Stelle in Spalte B
meiner anderen Arbeitsblatt FeedSamples
.
Kann jemand mir helfen mit diesem? Ich bin kaum ein Benutzer, wenn es um Excel, und dies ist mein erstes mal "Entwickeln".
BEARBEITEN:
Aktuellen Code. Dies ist für verschiedene save-Verfahren, je nachdem, ob das speichern eines neuen Datensatzes oder das speichern nach dem Bearbeiten eines zuvor erstellten Datensatz.
Für die Sample-Daten, die sagen, ich bin auf der Suche nach "FeedSampleForm".Range("A5:B5").Wert "SR0238" ich muss sehen, ob "SR0238" existiert in Spalte B auf "FeedSamples" Arbeitsblatt, zurzeit mit "SR0237" - "SR0252". Wenn es nicht vorhanden ist, kann ich denselben code wie mein Datensatz Hinzufügen-Funktionalität, aber wenn Sie es tut, muss ich schreiben, dass die genaue Zeile beim speichern.
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
Sind Sie auf der Suche nach mehreren Werten? "A5:B5" oder ist das ein Wert für den split? Können Sie keine sample-Daten.
Bearbeitet, um hinzufügen von code-und sample-Daten.
InformationsquelleAutor Analytic Lunatic | 2013-06-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ein sehr einfacher Weg ist es zu erklären, dass der Bereich, den Sie durchsuchen möchten, und den Wert, den Sie finden möchten.
Gehe ich davon aus, dass Ihre range ("A5:B5") ist eine verbundene Zelle, weil Sie angegeben haben, dass Sie enthalten einen einzelnen Wert. Verbundene Zellen können nur referenziert werden, durch die "oben-Links" - Zelle in den Seriendruck (oder zumindest das ist, wie ich darüber denke). So zusammengeführten range ("A5:B5") bezeichnet werden kann als nur ("A5"). Wie auch immer, hier ist eine modifizierte version von der oben genannten Methode, die besser geeignet für Ihre Bedürfnisse.
'Dim xlRange As Range Dim xlCell Als Range Dim xlFormSheet As Worksheet Dim xlSamplesSheet As Worksheet Dim iLastRow As Integer Dim iRow As Integer Dim bFound As Boolean Dim valueToFind bFound = False Set xlFormSheet = ActiveWorkbook.Worksheets("FeedSampleForm") Set xlSamplesSheet = ActiveWorkbook.Worksheets("FeedSamples") Set valueToFind = xlFormSheet.Range("A5:B5").Wert iLastRow = xlSamplesSheet.Range("B1").End(xlDown).Zeile Set xlRange = xlSamplesSheet.Range("B1:B" & iLastRow) Für Jede xlCell In xlRange
In dem Beispiel, das ich oben benutzt, erklärte ich valueToFind als string (basierend auf den Beispiel-Daten, die Sie zur Verfügung gestellt). So nicht verwenden 'Gesetzt valueToFind'. Stattdessen verwenden Sie einfach 'valueToFind = xlFormSheet.Range("A5").Wert'
Danke! Nur lösen die Kopfschmerzen, die ich ging voran und nahm die variable den eigentlichen Zellbereich ich bin auf der Suche nach. Sieht aus wie die meisten es jetzt funktioniert! Ich habe einen letzten Beitrag Probleme mit Excel die automatische Umwandlung meiner Inhalte, wenn Sie fühlen sich wie ein knacken an. Ein Feld den Wert "22/50" endet 0.44.
Ich nahm einen Riss an es
InformationsquelleAutor rwisch45