Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

VBA vergleichen Tabelle

Frage Entwicklung VB for Applications

Mitglied: Saiks1989

Saiks1989 (Level 1) - Jetzt verbinden

21.02.2009, aktualisiert 21:40 Uhr, 5073 Aufrufe, 13 Kommentare

Hallo Leute,

ich möchte folgendes erreichen:

Es gibt 2 Tabellen, in der einen Tabelle wird nach der Reihe der Wert aus Spalte "A" mit den Werten aus der Tabelle aus der Spalte "B" verglichen. Die Werte in der 2 Tabelle sind nicht gleich angeordnet wie die in der ersten. Wenn der Wert aus A gefunden wurde soll ein Wert der in der 1. Tabelle in Spalte C steht, in die 2. Tabelle in die Spalte G kopiert/eingefügt werden.
Wäre sowas möglich?! Hab mir schon die Zähe daran ausgebissen.

Hier mein Anfang, der einige Fehler enthält. Es ist auch vielleicht ein komplett falscher Ansatz.

Code:

Sub x()


Dim Zelle As Range
Dim sBeg As String
Dim selc
Dim i As Integer

Do Until i = 50
i = i + 1
sBeg = Tabelle3.Range("A" & i)
selc = Tabelle2.Range("B2:B65536")
selc.Select
If Zelle = sBeg And Tabelle3.Range("E" & i) <> "D" Then
Zelle.Select

Selection.Copy
Sheets("Zusammenfasssung").Select
Range("G" & i).Select
ActiveSheet.Paste
End If
Loop

End Sub
Mitglied: bastla
21.02.2009 um 22:01 Uhr
Hallo Saiks1989 und willkommen im Forum!

Ist das so gemeint, dass, wenn der Wert aus zB A2 auch in der Spalte B zumindest einmal vorkommt, der Wert aus C2 in die Spalte G der zweiten Tabelle eingefügt werden soll?

Dann etwa so:
01.
Sub Zusammenfassen() 
02.
Quelltabelle = "Tabelle1" 
03.
Quellspalte = "C" 
04.
Quellzeile = 2 'Quelldaten ab dieser Zeile 
05.
Kriterienspalte = "A" 
06.
Set Suchbereich = Worksheets(Quelltabelle).Range("B:B") 
07.
 
08.
Zieltabelle = "Tabelle2" 
09.
Zielspalte = "G" 
10.
Zielzeile = 2 'Eintragung ab dieser Zeile 
11.
 
12.
With Worksheets(Quelltabelle) 
13.
    Kriterium = .Cells(Quellzeile, Kriterienspalte) 
14.
    Do While Kriterium <> "" 
15.
        If Not Suchbereich.Find(Kriterium, LookIn:=xlValues) Is Nothing Then 
16.
            Worksheets(Zieltabelle).Cells(Zielzeile, Zielspalte).Value = .Cells(Quellzeile, Quellspalte).Value 
17.
            Zielzeile = Zielzeile + 1 
18.
        End If 
19.
        Quellzeile = Quellzeile + 1 
20.
        Kriterium = .Cells(Quellzeile, Kriterienspalte) 
21.
    Loop 
22.
End With 
23.
End Sub
Grüße
bastla

P.S.: Für die Formatierung von Code siehe hier ...
Bitte warten ..
Mitglied: wiesi200
21.02.2009 um 22:02 Uhr
wie währ's mit einer einfachen abfrage in access?
Bitte warten ..
Mitglied: Saiks1989
22.02.2009 um 17:08 Uhr
Es ist wichtig, dass es mit excel abläuft..
Bitte warten ..
Mitglied: Saiks1989
22.02.2009 um 19:02 Uhr
Nicht ganz. Der Suchbereich befindet sich in der 2. Tabelle. Wenn der Suchwert in der 2 Tabelle gefunden wird soll der Wert genau in die selbe Zeile neben den Suchbereich.
Bitte warten ..
Mitglied: bastla
22.02.2009 um 19:45 Uhr
Hallo Saiks1989!

Wenn der Wert in der selben Zeile neben den Suchbereich (Tabelle2, Spalte B) stehen soll, dann verwende doch einfach die folgende Formel und kopiere diese nach unten:
=WENN(ISTFEHLER(SVERWEIS(B2;Tabelle1!$A$1:$C$50;3;0));"";SVERWEIS(B2;Tabelle1!$A$1:$C$50;3;0))
Falls das Ganze allerdings anders gemeint war, dann stelle bitte die Inhalte der relevanten Spalten aus den beiden Tabellen einmal etwas genauer dar ...

Grüße
bastla
Bitte warten ..
Mitglied: Saiks1989
22.02.2009 um 20:26 Uhr
Das einfachste ist, wenn ich irgendwie mittels vba die Zeilennummer rausfinden kann in der der gesuchte wert drin steht.
Bitte warten ..
Mitglied: bastla
22.02.2009 um 20:42 Uhr
Hallo Saiks1989!

Na dann eben folgende Variation der Schleifenteiles:
01.
With Worksheets(Quelltabelle) 
02.
    Kriterium = .Cells(Quellzeile, Kriterienspalte) 
03.
    Do While Kriterium <> "" 
04.
        Set F = Suchbereich.Find(Kriterium, LookIn:=xlValues) 
05.
        If Not F Is Nothing Then 
06.
            Zeile = F.Row 
07.
08.
            ' weitere Befehle 
09.
10.
        End If 
11.
        Quellzeile = Quellzeile + 1 
12.
        Kriterium = .Cells(Quellzeile, Kriterienspalte) 
13.
    Loop 
14.
End With
Grüße
bastla
Bitte warten ..
Mitglied: Saiks1989
23.02.2009 um 13:10 Uhr
So das klappt nun auch super danke.. Jetz möchte ich es gern etwas abgewandelt haben und zwar sollen nach zwei Kriterien gesucht werden.
Erst wenn diese in der gleichen Zeile gefunden werden soll der Wert in die andere Tabelle übertragen werden. Ich hab es auch schon versucht, aber
es kommt immer ein Fehler:

Sub Zusammenfassen()
Dim Spalte

Quellzeile = 2 'Quelldaten ab dieser Zeile


Set Suchbereich = Worksheets("intern").Range("B:B")
Set Suchbereich1 = Worksheets("intern").Range("C:C")


With Worksheets("Zusammenfassung")
Kriterium = Tabelle3.Range("A" & Quellzeile)
Kriterium1 = Tabelle3.Range("D" & Quellzeile)
Do While Kriterium <> ""




Set F = Suchbereich.Find(Kriterium, LookIn:=xlValues)
Set G = Suchbereich1.Find(Kriterium1, LookIn:=xlValues)

Zeile1 = G.Row

Zeile = F.Row

If Zeile1 = Zeile Then
Tabelle3.Range("G" & Quellzeile) = Worksheets("intern").Range("D" & Zeile)
End If

If Tabelle3.Range("E" & Quellzeile) = "D" Then
Tabelle3.Range("G" & Quellzeile) = ""
End If

Quellzeile = Quellzeile + 1
Kriterium = Tabelle3.Range("A" & Quellzeile)
Loop
End With
End Sub
Bitte warten ..
Mitglied: bastla
23.02.2009 um 13:36 Uhr
Hallo Saiks1989!

Lässt sich
es kommt immer ein Fehler:
etwas konkretisieren?

Vorweg vielleicht gleich ein Hinweis auf eine Zeile der Art
If Not F Is Nothing Then
- damit wird der Fall abgefangen, dass die Suche erfolglos war ...

Grüße
bastla
Bitte warten ..
Mitglied: Saiks1989
23.02.2009 um 15:10 Uhr
Laufzeitfehler \'91\'.

Objektvariable oder With-Blockvariable nicht festgelegt

Das ist die Fehlermeldung.
Bitte warten ..
Mitglied: bastla
24.02.2009 um 21:34 Uhr
Hallo Saiks1989!

Und für welche Zeile wird der Fehler angezeigt (wo landest Du, wenn Du "Debuggen" wählst)?

Um zumindest die Hälfte der Meldung ausschließen zu können, kannst Du die "With"- und "End With"-Zeile aus Deinem Coden entfernen - Du verwendest deren Funktionalität ohnehin nicht.

Ansonsten nochmals der Hinweis darauf, dass der Rückgabewert für das Suchergebnis (das Objekt F bzw G) auch Nothing sein kann und dies vor dem Versuch, mit F.Row bzw G.Row die Zeile der Fundstelle zu erhalten, geprüft werden sollte.

Grüße
bastla
Bitte warten ..
Mitglied: Saiks1989
25.02.2009 um 08:31 Uhr
Hallo bastla!

Ich hab nun hab nun With und End with entfernt! Es kommt kein Fehler wenn ich das mit nothing machen, aber es kommen dann auch keine Ergbnisse.
Der Debugger springt auf diese Zeile: "Zeile1 = G.Row".

Es soll einfach das selbe wie vorher gemacht werden nur es muss zwei Kriterien in einer Zeile sein. Es wenn diese zwei Kritieren in der anderen Tabelle gefunden werden soll der Wert übertragen werden...
Bitte warten ..
Mitglied: bastla
25.02.2009 um 10:59 Uhr
Hallo Saiks1989!

Poste doch bitte nochmals den aktuellen Stand Deines Scripts (und verwende dafür Code-Formatierung).

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
Vergleich von 2 Tabellen in Excel
gelöst Frage von abuelitoMicrosoft Office4 Kommentare

Hallo an Alle, folgendes Problem: Ich habe eine Exceldatei mit 2 Tabellen. Spalten sind identisch. Tabelle1 hat aktuelle Daten ...

VB for Applications
Exceltabelle mit anderen 2 tabellen vergleichen
gelöst Frage von 123660VB for Applications12 Kommentare

Hallo zusammen! Ich stehe vor folgendem Problem und bräuchte wieder eure Hilfe. In Excel 2010 muss ich Tabelle 1 ...

Microsoft
Tabellen miteinander vergleichen
Frage von Acht85Microsoft1 Kommentar

Hallo Community, ich habe 2 Tabellen mit Namen (die auch unterschiedlich geschrieben sein können, baer nicht mehrmals auftauchen) und ...

Microsoft Office
ACCESS Tabellen vergleichen
gelöst Frage von abuelitoMicrosoft Office4 Kommentare

Hallo, ich habe eine ACCESS 2003 Datenbank mit 2 Tabellen. Jede Tabelle hat nur eine Spalte. Tabelle1 hat ca. ...

Neue Wissensbeiträge
Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 18 MinutenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 14 StundenInternet2 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 18 StundenDSL, VDSL1 Kommentar

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Windows 10

Microsoft bestätigt DMA-Policy-Problem in Win10 v1709

Information von DerWoWusste vor 18 StundenWindows 10

Wer sein Gerät mit der DMA-Policy absichert, bekommt evtl. Hardwareprobleme in v1709 von Win10. Warum? Weil v1709 endlich "richtig" ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement21 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...

Windows Server
Anmeldung direkt am DC nicht möglich
Frage von ThomasGrWindows Server16 Kommentare

Hallo, ich habe bei unserem Server 2016 Standard ein Problem. Keine Ahnung wie das auf einmal passiert ist. Ich ...

TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte14 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...