Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Gleicher VBA-Code in verschiedenen Spalten
#1
Guten Morgen zusammen,

ich habe ein vermutlich simples Problem, aber ich komme nicht weiter. Und zwar habe ich unten stehenden Code geschrieben, der mir Bezirke zu gewissen Postleitzahlen raussucht. Dies muss ich allerdings für 25 Stops machen (Spalten). Dabei liegen die Spalten immer im gleichen Abstand nebeneinander, sprich in diesem Text: 14 --> 21 (+7), 15 --> 22 (+7) und Spalte N sollte im nächsten Durchgang U sein (+7). Und dieser ganze Prozess dann insgesamt 25 mal. (für den einen Wert also 14,21,28,35,42,49 etc.). Könnte mir da jemand weiterhelfen?Smile

Beste Grüsse

nionox

Code:
Sub Bezirkszuweisung1()

Dim Berechnung As Worksheet, Ortschaftenverzeichnis As Worksheet
Dim Berechnunglastrow As Long, Ortschaftenverzeichnislastrow As Long, x As Long
Dim OrtschaftenverzeichnisRng As Range, suchtext As String, findrng As Range
Dim celladdress As String

Set Berechnung = ThisWorkbook.Worksheets("Berechnung")
Set Ortschaftenverzeichnis = ThisWorkbook.Worksheets("Ortschaftenverz.-Rép. Localités")

Berechnunglastrow = Berechnung.Range("B" & Rows.Count).End(xlUp).Row
Ortschaftenverzeichnislastrow = Ortschaftenverzeichnis.Range("H" & Rows.Count).End(xlUp).Row

Set OrtschaftenverzeichnisRng = Ortschaftenverzeichnis.Range("H2:H" & Ortschaftenverzeichnislastrow)


For x = 2 To Berechnunglastrow
    If Cells(x, 14) <> "" Then
        suchtext = Worksheets("Berechnung").Range("N" & x).Value
        Set findrng = OrtschaftenverzeichnisRng.Find(What:=suchtext, LookIn:=xlValues)
            If findrng Is Nothing Then
                Worksheets("Berechnung").Cells(x, 15) = "N/A"
            Else
                Worksheets("Berechnung").Cells(x, 15) = Worksheets("Ortschaftenverz.-Rép. Localités").Cells(findrng.Row, 12)
            End If
    End If

    If Cells(x, 14) = "" Then
        Worksheets("Berechnung").Cells(x, 15) = "N/A"
    End If

Next x

End Sub

Antwortento top
#2
hallo,

baue eine zweite Schleife drumherum mit der Schrittweite 7

For y = 7 to 77 step 7
For x = ...
Cells(...,7+y)...

Kannst natürlich auch mit 0 anfangen und dann Cells(...,14+y) nehmen
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
Antwortento top
#3
Lade mal eine Beispieldatei hoch.
Verzichte auf diakritische Zeichen.
Verwende ein Dictionary.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antwortento top
#4
Okay, ich hab das jetzt mit y gemacht und in die andere Zelle anstatt "z" y+1 reingeschrieben. Soweit so gut, er packt mir das in die richtigen Spalten, allerdings greift er immer auf Spalte "N" zurück in der suchtext-Zeile. Kann ich das etwa mit Cells... umschreiben? Da könnte ich dann nämlich in Bezug zum Wert y die Spalte ausgeben. Wenn er zum nächsten Y springt, soll nicht auf Spalte N, sondern Spalte W (+10) und danach dann im +8 Rhythmus zurückgegriffen werden

Code:
For y = 16 To 191 Step 7

        For x = 2 To Berechnunglastrow
            If Cells(x, y) <> "" Then
                suchtext = Worksheets("Berechnung").Range("N" & x).Value
                Set findrng = OrtschaftenverzeichnisRng.Find(What:=suchtext, LookIn:=xlValues)
                    If findrng Is Nothing Then
                        Worksheets("Berechnung").Cells(x, y + 1) = "N/A"
                    Else
                        Worksheets("Berechnung").Cells(x, y + 1) = Worksheets("Ortschaftenverz.-Rép. Localités").Cells(findrng.Row, 12)
                    End If
            End If
       
            If Cells(x, y) = "" Then
                Worksheets("Berechnung").Cells(x, y + 1) = "N/A"
            End If
       
        Next x

Next y
Antwortento top
#5
Hallöchen,

Zitat:allerdings greift er immer auf Spalte "N" zurück in der suchtext-Zeile. Kann ich das etwa mit Cells... umschreiben?

Ein Grund, mit Cells statt mit Range zu arbeiten, ist die einfachere Nutzung von Variablen.
Range("N" & x) wäre mit fester Spalte Cells(x, 14)
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
Antwortento top
#6
HiSmile

Hat jetzt perfekt geklappt, dankeschön!
Antwortento top
#7
Geklappt hat es vielleicht. Pefekt ist es nicht.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antwortento top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste