Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Zeilen verschiedener Tabellenblätter vergleichen

Frage Entwicklung VB for Applications

Mitglied: RicoTumb

RicoTumb (Level 1) - Jetzt verbinden

20.04.2011 um 17:39 Uhr, 2925 Aufrufe

Hallo zusammen,

ich habe folgendes Problem:
Ich habe zwei Tabellenblätter (Tabellen2 und Tabellen3). In Tablle3 sind Daten zeilenweise aufgelistet. Es wurde dann ein Filter eingesetzt und bestimmte Daten nach dem Filtern wurden in Tabelle2 kopiert. Jede Zeile hat eine VorgangsID. Es soll nun in Tabelle2 jede Zeile mit jeder Zeile in Tabelle3 verglichen werden. Falls es nicht die selbe Zeile ist (was man an der VorgangsID erkennt) und bestimmte Voraussetzungen erfüllt sind, soll die jeweilige VorgangsID der Zeile aus Tabelle3 wieder in der Tabelle3 in Zeile 348 kopiert werden. Jede weitere VorgangsID, die die Voraussetzungen erfüllt und kopiert werden soll, soll dann unter diesen Eintrag kopiert werden.

Voraussetzungen sind folgende:

WENN beim Vergleich zweier Zeilen:
Datum auf Tabelle3 soll jünger ist
UND die unternehmensID in einer der Partnerspalten auftaucht
UND in einer der tie types INTERNATIONAL vermerkt ist

Ich habe nun folgendes Problem: ich habe selbst in kurzer Zeit versucht einen Code zu schreiben, der sicher programmiertechnisch nicht wirklich gut ist, da ich VBA Anfänger bin. Das Problem ist nun, dass der Code die VorgangsID des ersten Eintrags, der die Voraussetzung erfüllt richtig kopiert... Falls jedoch ein weiterer Eintrag zutreffend ist, wird diese VorgangsID nicht übernommen. Zudem werden manche VorgansIDs doppel oder dreifach kopiert. Unten poste ich auch meinen Code.

Ich wäre sehr dankbar, wenn mir jemand helfen könnte!

Vielen Dank im voraus!
Rico

01.
Sub Probe() 
02.
 
03.
Dim datum1 As String 
04.
Dim datum2 As String 
05.
Dim zeile As Integer 
06.
Dim spalte As Integer 
07.
Dim y As Integer 
08.
Dim neuZeile As Integer 
09.
Dim neuSpalte As Integer 
10.
Dim kopierZeile As Integer 
11.
Dim kopierSpalte As Integer 
12.
Dim unternehmensID As Integer 
13.
 
14.
 
15.
 
16.
spalte = 9 
17.
neuSpalte = 2 
18.
kopierZeile = 348 
19.
kopierSpalte = 1 
20.
 
21.
Set Table = ThisWorkbook.Worksheets("Tabelle2") 
22.
 
23.
With Table 
24.
 
25.
 
26.
For zeile = 2 To 36 
27.
    neuZeile = 2 
28.
   
29.
    Do While neuZeile <= 346 
30.
     
31.
    datum1 = .Cells(zeile, spalte).Value 
32.
    datum2 = ThisWorkbook.Worksheets("Tabelle3").Cells(neuZeile, neuSpalte + 7).Value 
33.
    unternehmensID = ThisWorkbook.Worksheets("Tabelle2").Cells(zeile, spalte - 6).Value 
34.
 
35.
    If (DateValue(datum2) <= DateValue(datum1)) _ 
36.
        And (.Cells(zeile, spalte - 8).Value <> ThisWorkbook.Worksheets("Tabelle3").Cells(neuZeile, neuSpalte).Value) _ 
37.
        And ((unternehmensID) = (ThisWorkbook.Worksheets("Tabelle3").Cells(neuZeile, neuSpalte + 1).Value) _ 
38.
        Or (unternehmensID) = (ThisWorkbook.Worksheets("Tabelle3").Cells(neuZeile, neuSpalte + 21).Value) _ 
39.
        Or (unternehmensID) = (ThisWorkbook.Worksheets("Tabelle3").Cells(neuZeile, neuSpalte + 27).Value) _ 
40.
        Or (unternehmensID) = (ThisWorkbook.Worksheets("Tabelle3").Cells(neuZeile, neuSpalte + 33).Value) _ 
41.
        Or (unternehmensID) = (ThisWorkbook.Worksheets("Tabelle3").Cells(neuZeile, neuSpalte + 39).Value) _ 
42.
        Or (unternehmensID) = (ThisWorkbook.Worksheets("Tabelle3").Cells(neuZeile, neuSpalte + 45).Value) _ 
43.
        Or (unternehmensID) = (ThisWorkbook.Worksheets("Tabelle3").Cells(neuZeile, neuSpalte + 51).Value) _ 
44.
        Or (unternehmensID) = (ThisWorkbook.Worksheets("Tabelle3").Cells(neuZeile, neuSpalte + 57).Value) _ 
45.
        Or (unternehmensID) = (ThisWorkbook.Worksheets("Tabelle3").Cells(neuZeile, neuSpalte + 63).Value)) _ 
46.
        And ((ThisWorkbook.Worksheets("Tabelle3").Cells(neuZeile, neuSpalte + 17).Value = "INTERNATIONAL") _ 
47.
        Or (ThisWorkbook.Worksheets("Tabelle3").Cells(neuZeile, neuSpalte + 23).Value = "INTERNATIONAL") _ 
48.
        Or (ThisWorkbook.Worksheets("Tabelle3").Cells(neuZeile, neuSpalte + 29).Value = "INTERNATIONAL") _ 
49.
        Or (ThisWorkbook.Worksheets("Tabelle3").Cells(neuZeile, neuSpalte + 35).Value = "INTERNATIONAL") _ 
50.
        Or (ThisWorkbook.Worksheets("Tabelle3").Cells(neuZeile, neuSpalte + 41).Value = "INTERNATIONAL") _ 
51.
        Or (ThisWorkbook.Worksheets("Tabelle3").Cells(neuZeile, neuSpalte + 47).Value = "INTERNATIONAL") _ 
52.
        Or (ThisWorkbook.Worksheets("Tabelle3").Cells(neuZeile, neuSpalte + 53).Value = "INTERNATIONAL")) _ 
53.
        Then 
54.
        'WENN beim Vergleich zweier Zeilen: 
55.
        'Datum auf Tabelle3 soll jünger ist 
56.
        'UND die unternehmensID in einer der Partnerspalten auftaucht 
57.
        'UND in einer der tie types INTERNATIONAL vermerkt ist 
58.
        'DANN: 
59.
         
60.
            y = ThisWorkbook.Worksheets("Tabelle3").Cells(neuZeile, neuSpalte - 1).Value 
61.
     
62.
            ThisWorkbook.Worksheets("Tabelle3").Cells(kopierZeile, kopierSpalte).Value = y 
63.
             
64.
            kopierZeile = kopierZeile + 1 
65.
 
66.
    Else 
67.
     
68.
    End If 
69.
     
70.
    neuZeile = neuZeile + 1 
71.
     
72.
    'Vergleich mit der nächsten Zeile fortführen 
73.
     
74.
    Loop 
75.
     
76.
  
77.
Next zeile 
78.
 
79.
End With 
80.
 
81.
End Sub
Neuester Wissensbeitrag
Ähnliche Inhalte
Windows Server
AD-Berechtigungen von zwei Servern miteinander vergleichen (3)

Frage von s0m3ting zum Thema Windows Server ...

Batch & Shell
gelöst Powershell - Dateien aus verschiedenen Arrays - Attribute vergleichen (5)

Frage von Giffas zum Thema Batch & Shell ...

Batch & Shell
gelöst Dateiinhalte vergleichen - Gemeinsamkeiten anzeigen (9)

Frage von Rotnasenkater zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...