Thema Datum  Von Nutzer Rating
Antwort
24.02.2020 16:53:18 Wolfgang
NotSolved
24.02.2020 16:55:57 Mase
NotSolved
24.02.2020 17:06:50 Gast45159
NotSolved
24.02.2020 17:13:10 Mase
NotSolved
24.02.2020 18:29:13 Gast12096
NotSolved
24.02.2020 19:47:12 Mase
NotSolved
24.02.2020 21:20:32 Wolfgang
NotSolved
24.02.2020 22:26:23 Mase
NotSolved
25.02.2020 13:33:30 Wolfgang
NotSolved
25.02.2020 13:56:10 Mase
NotSolved
25.02.2020 22:12:23 Wolfgang
NotSolved
26.02.2020 08:20:53 Mase
NotSolved
Rot Abgleich von Links in Strings funktioniert nicht
26.02.2020 20:36:02 Wolfgang
NotSolved
26.02.2020 22:58:08 Mase
NotSolved
27.02.2020 01:04:23 Wolfgang
NotSolved
27.02.2020 07:22:36 Mase
NotSolved
27.02.2020 21:46:01 Wolfgang
NotSolved
27.02.2020 23:31:20 Mase
*****
Solved
29.02.2020 12:55:48 Wolfgang
NotSolved
29.02.2020 13:20:51 Mase
NotSolved
03.03.2020 16:49:47 Wolfgang
NotSolved
03.03.2020 18:12:16 Mase
NotSolved

Ansicht des Beitrags:
Von:
Wolfgang
Datum:
26.02.2020 20:36:02
Views:
774
Rating: Antwort:
  Ja
Thema:
Abgleich von Links in Strings funktioniert nicht

Hallo Mase,

 

ja du hast Recht. Ich sollte mal die komplette Verarbeitung hochladen. Vielleicht wird es dann besser ersichtlich. Das beiden Tabellen sind sehr umfangreich (eine knapp über 1.000 Zeilen, die andere ca 12.000) daher wäre eine Anonymisierung entsprechend aufwendig. Wir versuchen es mal so, falls wir gar nicht weiterkommen, überlege ich mir was, wie ich es doch hochladen kann. Ich habe außerdem mal ein anonymisiertes Schema von den Links, die verglichen werden sollen, angefügt (Länge und Aufbau stimmen exakt mit den Original-Links überein).

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
Sub Tabellen_zusammenfuehren()
    
  Dim rngCsM  As Excel.Range 'Spalten in Master
  Dim rngCM   As Excel.Range 'Spalte in Master
  Dim rngCS   As Excel.Range 'Spalte in Quelle
  Dim lngOffset As Long
  Dim feed, feedsheet As Worksheet
  Dim zielSheet As Worksheet
  Dim w, x, y, z As Long
  Dim linkTarget, linkFeed As String
  Dim main_link_target, image, beschreibung, g_d_preis, price, main_link_source, image_source, description, preis, link_2 As Integer
  Dim Zeile As Long
  Dim ZeileMax As Long
   
  lngOffset = 1
    
Set zielSheet = Worksheets("Main")
  With Worksheets("Main")
    Set rngCsM = .Range("A1", .Cells(1, .Columns.Count).End(xlToLeft))
  End With
    
   
  For Each wks In ActiveWorkbook.Worksheets
   If Not wks.Name = "Main" Then
    With wks
    
     For Each rngCM In rngCsM.Cells
        
      'Spalte (anhand Beschriftung) suchen
      Set rngCS = .Rows(1).Find(What:=rngCM, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, MatchCase:=False)
        
      If Not rngCS Is Nothing Then
        Debug.Print "Spalte '"; CStr(rngCM); "' gefunden"
        'Datenbereich der Spalte ref.
        Set rngCS = .Range(rngCS.Offset(1), .Cells(.Rows.Count, rngCS.Column).End(xlUp))
        anzahluebertragenezeilen = rngCS.Rows.Count
        'Werte übertragen
        rngCM.Offset(lngOffset).Resize(rngCS.Rows.Count).Value = rngCS.Value
         
      Else
        Debug.Print "Spalte '"; CStr(rngCM); "' nicht gefunden"
      End If
        
     Next
     lngOffset = lngOffset + anzahluebertragenezeilen
    End With
   End If
  Next
   
 ' Abgleich mit dem Feed zum Einfuegen von Links, Preis, Bilder, Beschreibung
  
 feed = Application.GetOpenFilename
 If feed <> False Then
    Set feedsheet = Workbooks.Open(feed).Sheets(1)
 Else
    Exit Sub
End If
For z = 1 To feedsheet.Cells(1, 256).End(xlToLeft).Column
     Select Case feedsheet.Cells(1, z)
     Case "link_2"
          link_2= z
     Case "main_link_source"
        main_link_source = z
     Case "image_source"
        image_source = z
     Case "description"
        description = z
     Case "Preis"
        preis = z
     End Select
Next z
With zielSheet
For y = 1 To rngCsM.Columns.Count
     Select Case .Cells(1, y)
     Case "N_Link_1"
          N_Link_1 = y
     Case "main_link_target"
        main_link_target = y
     Case "Product"
        Product = y
     Case "Image"
        image = y
     Case "Beschreibung"
        beschreibung = y
     Case "G_D_Preis"
        g_d_preis = y
     Case "Price"
        price = y
     End Select
Next y
 
ZeileMax = .UsedRange.Rows.Count
 
For Zeile = ZeileMax To 1 Step -1
 
  If Trim(.Cells(Zeile, 1).Value) = "" Then
 
   .Rows(Zeile).Delete
 
  End If
Next Zeile
 
For x = 2 To .UsedRange.SpecialCells(xlCellTypeLastCell).Row
   If .Cells(x, 1).Value <> "" Then
     linkTarget = LTrim(.Cells(x, N_Link_1).Value2)
     For w = 2 To feedsheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
       linkFeed = LTrim(feedsheet.Cells(w, link_2).Value2)
       Debug.Print linkTarget
       Debug.Print linkFeed & " =" & linkTarget = linkFeed
       If linkFeed = linkTarget Then
          .Cells(x, main_link_target) = feedsheet.Cells(w, main_link_source)
          .Cells(x, image) = feedsheet.Cells(w, image_source)
          .Cells(x, beschreibung) = feedsheet.Cells(w, description)
          .Cells(x, g_d_preis) = feedsheet.Cells(w, preis)
          .Cells(x, price) = feedsheet.Cells(w, preis)
       End If
       
      Next w
    End If
Next x
End With
 
   
End Sub

 

 

Ich hoffe es ist nicht zu unübersichtlich. Zur Erläuterung: Die Links die abgeglichen werden sind nicht die, die ich letztendlich in meiner Tabelle haben möchte. Abgeglichen werden N_Link_1 und link_2. Bei einem Match wird dann main_link_target mit main_link_source befüllt.

Ich arbeite zusammen mit Tobi an diesem "Projekt", um für den Verien diverse Material- und Bestelllisten zusammenzubringen. Deswegen ist der nachfolgende Teil  obsolet, wenn die Löschung der leeren Zeilen in Tobi's vorhergehendem Schritt funktioniert. Und demenstprechend funktioniert die Abfrage, ob die Zeile leer ist auch hier nicht zuverlässig. Der Programmdurchlauf hängt sich an den leeren Zeilen insbesondere auf, da aus irgendeinem Grund dort ein Abgleich statfindet und er dann wohl alle 12.000 Zeilen des Feeds auf ein Match durchsucht.

1
2
3
4
5
6
7
8
9
10
ZeileMax = .UsedRange.Rows.Count
 
For Zeile = ZeileMax To 1 Step -1
 
  If Trim(.Cells(Zeile, 1).Value) = "" Then
 
   .Rows(Zeile).Delete
 
  End If
Next Zeile

 

 

Und hier noch das Schema eines Links, der verglichen wird. Vielleicht findet sich ja hierbei ein Hinweis, warum es nicht funktioniert.

 

 http://xxx.main.de/index.php?redirect=https%3A%2F%2Fwww.ziel-seite.de%2Fxxxxx-xxxxxx-6-9-x0048692%3Fsize%3D1%26varid%3D375608%26bcc=12345&ab=012345678902345678911&bm=100&bmcl=0123456789012345678901234&cp_nnnn=Ovpe&ag_name=feed&bk=default

 

 

Vielen Dank nochmal für die stets schnellen und hilfreichen Antworten Mase :)

 

Grüße

Wolfgang


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
24.02.2020 16:53:18 Wolfgang
NotSolved
24.02.2020 16:55:57 Mase
NotSolved
24.02.2020 17:06:50 Gast45159
NotSolved
24.02.2020 17:13:10 Mase
NotSolved
24.02.2020 18:29:13 Gast12096
NotSolved
24.02.2020 19:47:12 Mase
NotSolved
24.02.2020 21:20:32 Wolfgang
NotSolved
24.02.2020 22:26:23 Mase
NotSolved
25.02.2020 13:33:30 Wolfgang
NotSolved
25.02.2020 13:56:10 Mase
NotSolved
25.02.2020 22:12:23 Wolfgang
NotSolved
26.02.2020 08:20:53 Mase
NotSolved
Rot Abgleich von Links in Strings funktioniert nicht
26.02.2020 20:36:02 Wolfgang
NotSolved
26.02.2020 22:58:08 Mase
NotSolved
27.02.2020 01:04:23 Wolfgang
NotSolved
27.02.2020 07:22:36 Mase
NotSolved
27.02.2020 21:46:01 Wolfgang
NotSolved
27.02.2020 23:31:20 Mase
*****
Solved
29.02.2020 12:55:48 Wolfgang
NotSolved
29.02.2020 13:20:51 Mase
NotSolved
03.03.2020 16:49:47 Wolfgang
NotSolved
03.03.2020 18:12:16 Mase
NotSolved