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, 2926 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
Exchange Server

WSUS bietet CU22 für Exchange 2007 SP3 nicht an. EOL Exchange 2007

Tipp von DerWoWusste zum Thema Exchange Server ...

Heiß diskutierte Inhalte
Batch & Shell
gelöst Batch xls nach aktuellem Datum auslesen und email senden (14)

Frage von michi-ffm zum Thema Batch & Shell ...

Backup
Datensicherung ARCHIV (12)

Frage von fautec56 zum Thema Backup ...

LAN, WAN, Wireless
Per Script auf UniFi-controller zugreifen und WPA2-Key ändern (11)

Frage von Winfried-HH zum Thema LAN, WAN, Wireless ...