Supportnet Computer Supportnet Games Supportnet Kochen Explipedia
Login: guestBesucher online: 233
Supportnet Computerforum
SUPPORT
Home
Forum
Tipps & Infos
Blitz Angebote
Members
Hilfe
Video

TOP THEMEN
SSD Test
Alles über SSDs

Android Tipps
iPad Tipps
Google Tipps
Windows 8 FAQ
Windows 7 FAQ
E-Mail FAQ
Netzwerk FAQ
Festplatten FAQ
Datenrettung FAQ
Bildbearbeitung FAQ

Top iPhone Apps
Computer Einsteiger
Die 5 besten...
Explipedia
Themen
Direktlinks

Neue Einträge
News einsenden News einschicken
Tipps einsenden Tipp einschicken

SN-LINKS

Suche
Befreundete Seiten
Top Seiten

Supportnet/Forum/Tabellenkalkulation



Supportnet/Forum/Tabellenkalkulation
von Kaipi vom 03.11.2017, 12:54 Diese Seite den Supportnet Favoriten hinzufügen  Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden


2 Arbeitsblätter vergleichen

 (271 Hits)

Hallo,
es geht um zwei Arbeitsblätter in Excel 2013 in denen ich 2 Spalten vergleichen will.
In der ersten Arbeitsmappe (wksQ) Sheet(1) sind in Spalte D Zahlen. Diese Spalte enthält auch Leerzellen!
Die zweite Arbeitsmappe (wksZ) Sheet(2), Spalte C ist schon mit Daten gefüllt. Zeilen ohne Leerzellen.
Nun soll die Spalte D von wksQ mit der Spalte C von wksZ verglichen werden.
Wenn nun ein Wert von wksQ/Spalte D nicht in wksZ/Spalte C vorkommt,
dann soll von wksQ die Zeile C bis I in die nächste frei Zeile von wksZ von B bis H kopiert werden.
Das ganze würde ich in VBA benötigen.
Habe schon einige Beiträge durchstöbert, aber ich finde einfach nichts passendes.

Gruß,
Gerald


Antwort schreiben 50 Bonuspunkte

Antworten...
Antwort 1 von Nighty___ vom 11.11.2017, 11:48 Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden

Hallo Gerald .-)

Ein Beispiel

Gruß Nighty

Worksheetnamen ergänzen
C-I wird kopiert
C+C wird verglichen,bei nicht fund auf C wird C-I ergänzt

Sub DateiAuslesen()
    Dim Index As Long, Zeile As Long, SpIndex As Long
    Dim SpaArr As Variant
    Dim Suche As Object
    Workbooks.Open Filename:=Application.GetOpenFilename("Dateien(*.xls), *.xls", , "Datei auswählen", , False)
    SpaArr = Worksheets("Tabelle1").Range("C2:I" & Worksheets("Tabelle1").Range("C" & Rows.Count).End(xlUp).Row)
    ActiveWorkbook.Close
    For Index = 1 To UBound(SpaArr, 1)
        Set Suche = Worksheets("Tabelle1").Range("C2:C" & Worksheets("Tabelle1").Range("C" & Rows.Count).End(xlUp).Row).Find(SpaArr(Index, 1))
        If Suche Is Nothing Then
            Zeile = Worksheets("Tabelle1").Range("C" & Rows.Count).End(xlUp).Row + 1
            For SpIndex = 1 To UBound(SpaArr, 2)
                Worksheets("Tabelle1").Cells(Zeile, SpIndex + 2) = SpaArr(Index, SpIndex)
            Next SpIndex
        End If
    Next Index
End Sub


Antwort noch nicht bewertet
Antwort 2 von Kaipi vom 13.11.2017, 21:37 Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden

Hallo Nighty,
habe es angepasst und funktioniert!
Super, vielen Dank!!

Jetzt habe ich noch ein Problem...
das Tabellenblatt hat sich für das nächste Jahr etwas geändert.
Es sollten wieder Spalten in den beiden Arbeitsmappen verglichen werden.

In diesem Fall, wenn der Wert, z.B. in Zeile 2, Spalte B (PSP-Element) und Spalte C (EKW-Nr.)
nicht im Arbeistsblatt wksZ Spalte B und C vorkommt, dann sollte die Zeile von wksQ (Budget) Spalte B bis H
ins Arbeitsblatt wksZ (DATA_HW) in die nächste freie Zeile kopiert werden.
Habe es mit einem mehrdimensionalen Array versucht, aber ich kriege es einfach nicht zum laufen.
Vielleicht hättest Du noch ein Beispiel.

Gruß,
Gerald

Arbeitsmappe wksQ (Budget):

Nr.	PSP-Element	 EKW-Nr. Bestellnr.	Betrag  €	 Lieferdatum Lieferant    Lieferantennr.
1	P-A001-18-10-1000	2002808420	B34567	1.000,00	31.12.2017	ccc	345678
	P-A001-18-10-1000	2002921056	B98765	1.000,00	31.12.2017	fff	987654
	P-A001-18-10-1000	2002637381	B12345	1.000,00	31.12.2017	aaa	123456
2	P-A002-18-10-1000	2002894108	B45678	1.000,00	31.12.2017	ddd	567890
	P-A002-18-10-1000	2002797310	B23456	1.000,00	31.12.2017	bbb	234567
	P-A002-18-10-1000	2002637381	B12345	1.000,00	31.12.2017	aaa	123456
3	P-A003-18-10-1000	2002921056	B98765	1.000,00	31.12.2017	fff	987654
	P-A003-18-10-1000	2002894108	B45678	1.000,00	31.12.2017	ddd	567890
	P-A003-18-10-1000	2002637381	B12345	1.000,00	31.12.2017	aaa	123456
4	P-A004-18-10-1000	2002808420	B34567	1.000,00	31.12.2017	ccc	345678
	P-A004-18-10-1000	2002901428	B67890	1.000,00	31.12.2017	eee	765432
	P-A004-18-10-1000						
5	P-A005-18-10-1000	2002894108	B45678	1.000,00	31.12.2017	ddd	567890
	P-A005-18-10-1000	2003017596	B86432	1.000,00	31.12.2017	ggg	864210
	P-A005-18-10-1000	2002637381	B12345	1.000,00	31.12.2017	aaa	123456
6	P-A006-18-10-1000	2002921056	B98765	1.000,00	31.12.2017	fff	987654
	P-A006-18-10-1000	2002894108	B45678	1.000,00	31.12.2017	ddd	567890
	P-A006-18-10-1000	2002637381	B12345	1.000,00	31.12.2017	aaa	123456



Arbeitsmappe wksZ (DATA_HW):

Nr.	PSP-Element	EKW-Nr.	Bestellnr.	Betrag €	Lieferdatum	Lieferant	Lieferantennr.
1	P-A001-18-10-1000	2002637381	B12345	1.000,00	31.12.2017	aaa	123456
2	P-A002-18-10-1000	2002637381	B12345	1.000,00	31.12.2017	aaa	123456
3	P-A003-18-10-1000	2002637381	B12345	1.000,00	31.12.2017	aaa	123456
4	P-A005-18-10-1000	2002637381	B12345	1.000,00	31.12.2017	aaa	123456
5	P-A006-18-10-1000	2002637381	B12345	1.000,00	31.12.2017	aaa	123456
6	P-A002-18-10-1000	2002797310	B23456	1.000,00	31.12.2017	bbb	234567
7	P-A001-18-10-1000	2002808420	B34567	1.000,00	31.12.2017	ccc	345678
8	P-A004-18-10-1000	2002808420	B34567	1.000,00	31.12.2017	ccc	345678
9	P-A004-18-10-1000	2002901428	B67890	1.000,00	31.12.2017	eee	765432
10	P-A001-18-10-1000	2002921056	B98765	1.000,00	31.12.2017	fff	987654
11	P-A003-18-10-1000	2002921056	B98765	1.000,00	31.12.2017	fff	987654
12	P-A006-18-10-1000	2002921056	B98765	1.000,00	31.12.2017	fff	987654


Antwort noch nicht bewertet Als gute Antwort bewerten
Antwort 3 von Nighty____ vom 14.11.2017, 16:21 Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden

Hallo Gerald :-)

Vielleicht so!

Gruß Nighty

Sub DateiAuslesen()
    Dim Index As Long, Zeile As Long, SpIndex As Long
    Dim SpaArr As Variant
    Dim Suche1 As Object, Suche2 As Object
    Workbooks.Open Filename:=Application.GetOpenFilename("Dateien(*.xls), *.xls", , "Datei auswählen", , False)
    SpaArr = Worksheets("Tabelle1").Range("C2:I" & Worksheets("Tabelle1").Range("C" & Rows.Count).End(xlUp).Row)
    ActiveWorkbook.Close
    For Index = 1 To UBound(SpaArr, 1)
        Set Suche1 = Worksheets("Tabelle1").Range("C2:C" & Worksheets("Tabelle1").Range("C" & Rows.Count).End(xlUp).Row).Find(SpaArr(Index, 1))
        Set Suche2 = Worksheets("Tabelle1").Range("D2:D" & Worksheets("Tabelle1").Range("D" & Rows.Count).End(xlUp).Row).Find(SpaArr(Index, 2))
        If Suche1 Is Nothing And Suche2 Is Nothing Then
            Zeile = Worksheets("Tabelle1").Range("C" & Rows.Count).End(xlUp).Row + 1
            For SpIndex = 1 To UBound(SpaArr, 2)
                Worksheets("Tabelle1").Cells(Zeile, SpIndex + 2) = SpaArr(Index, SpIndex)
            Next SpIndex
        End If
    Next Index
End Sub


Antwort noch nicht bewertet




Antwort schreiben
    Bitte einen 'Nickname' wählen.
Nickname:*
    (eMail-Adresse wird nicht veröffentlicht.)
eMail:
Nachricht: Ich möchte bei Antworten benachrichtigt werden.
    Hilfe zur Beitragsformatierung gibts [hier]
                   
Antwort:*
  Die Nutzungsbedingungen habe ich gelesen und akzeptiert.

MACHEN SIE IHRE WEBSITE ATTRAKTIVER
Sie haben eine eigene Website und wollen Ihre Besucher auf den Supportnet-Service aufmerksam machen? Kopieren Sie einfach den Quellcode in Ihre Seite und jeder Besucher Ihrer Seite kann direkt auf die Supportnet-Datenbank zugreifen.

My Supportnet


SUCHE

Gruppen im Forum
Betriebsysteme
Software
Hardware
Netzwerk
Programmierung
Sonstiges

Impressum © 1997-2015 SupportNet
Version: supportware 1.8.230E / 18.10.2010, Startzeit:Sun Nov 12 22:19:35 2017