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, 2937 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
Ähnliche Inhalte
Neue Wissensbeiträge
Windows 10

Windows 8.x oder 10 Lizenz-Key aus dem ROM auslesen mit Linux

(6)

Tipp von Lochkartenstanzer zum Thema Windows 10 ...

Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(40)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Heiß diskutierte Inhalte
Windows 10
gelöst Windows 10 Home "Netzlaufwerk nicht bereit" (19)

Frage von Oggy01 zum Thema Windows 10 ...

Exchange Server
gelöst RU 17 Exchange 2010 . Erfahrungen? (10)

Frage von keine-ahnung zum Thema Exchange Server ...

Datenbanken
gelöst MySQL Zeiterfassungs-Problematik (wer ist eingecheckt) (9)

Frage von NativeMode zum Thema Datenbanken ...

Windows Server
Festplatten Ruhezustand Windows Server 2016 (8)

Frage von ahaeuser zum Thema Windows Server ...