Office: VBA Tabelle durchsuchen und Zellen übertragen

Helfe beim Thema VBA Tabelle durchsuchen und Zellen übertragen in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, ich hab mir hier ein kleines Tool gebasteltet. Ich gebe bei der Planung die Produktionsmengen für die Woche ein. Diese einzelnen... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Philonous, 7. Juni 2014.

  1. Philonous Erfahrener User

    VBA Tabelle durchsuchen und Zellen übertragen


    Hallo zusammen,

    ich hab mir hier ein kleines Tool gebasteltet.

    Ich gebe bei der Planung die Produktionsmengen für die Woche ein. Diese einzelnen Produktionsmengen möchte ich nun bei Zeitberechnung drinnen haben.

    Das bedeutet, ich müsste den Bereich E10:A22 "scannen" können, würde die Zelle befüllt also etwas eingetragen, wenn ja die Artikelnummer mit der Produktionsmenge in Zeitberechnung übertragen.
    Hierbei sollte es so funktionieren, dass der Suchdurchlauf von oben nach unten und von links nach rechts funktioniert. Also, einfach die Reihenfolge, wie es auch in der Woche produziert werden würde. Wenn eine Artikelnummer zwei Mengen die Wochen hat, soll auch die Artikelnummer mit geschrieben werden, also auf keinen Fall zusammengefasst werden.

    Ist dies möglich? Also, Tabellenbereich durchscannen, wenn Zelle mit Eintrag - Zelle übertragen.

    Würde mich über Lösungsvorschläge und Ideen freuen.

    Vielen Dank
     
    Philonous, 7. Juni 2014
    #1
  2. Beverly
    Beverly Erfahrener User
    Hi,

    in welchem Tabellenblatt soll gesucht werden - in Wochenplanung? In Zeile 21 steht eine Summe und in Zeile 22 steht "Durchführung" und weshalb soll im Bereich der Spalten E:A gesucht werden? Nenne doch mal ein konkretes Beispiel, was im Tabellenblatt Zeitrechnung stehen soll.

    Bis später,
    Karin
     
    Beverly, 8. Juni 2014
    #2
  3. Philonous Erfahrener User
    Ja, richtig Wochenplanung. Es sollen nicht die gesamt Werte sondern die einzelnen Zahlen/Mengen zu den Artikelnummern rausgeschrieben.

    Hier ein Beispiel im Tabellenberech der Planung. So sollten die Werte im besten Fall übertragen werden und die Reihenfolge sollte auch so eingehalten werden.
     
    Philonous, 8. Juni 2014
    #3
  4. Beverly
    Beverly Erfahrener User

    VBA Tabelle durchsuchen und Zellen übertragen

    Es wäre schon hilfreich gewesen, wenn du alle meine Fragen beantwortet hättest - folglich kann ich nur raten: es soll im Bereich E10:AA20 und nicht in E10:A22 gesucht werden?

    Code:
    Sub Zeitrechnung()
       Dim intSpalte As Integer
       Dim lngZeile As Long
       Dim lngZiel As Long
       lngZiel = 4
       For intSpalte = 5 To 27
          If intSpalte Mod 4 <> 0 Then
             If Application.Count(Range(Cells(10, intSpalte), Cells(20, intSpalte))) > 0 Then
                For lngZeile = 10 To 20
                   If Cells(lngZeile, intSpalte) <> "" Then
                      Worksheets("Zeitberechnung").Cells(lngZiel, 1) = Cells(lngZeile, 2)
                      Worksheets("Zeitberechnung").Cells(lngZiel, 2) = Cells(lngZeile, intSpalte)
                      lngZiel = lngZiel + 1
                      If Application.Count(Range(Cells(lngZeile + 1, intSpalte), _
                         Cells(20, intSpalte))) = 0 Then Exit For
                   End If
                Next lngZeile
             End If
          End If
       Next intSpalte
    End Sub
    Bis später,
    Karin
     
    Beverly, 8. Juni 2014
    #4
  5. Philonous Erfahrener User
    Richtig, genau der Bereich war gemeint. Es funktioniert fabelhaft! Super, genial....

    Noch zwei Fragen: das selbe Spiel müsste jetzt auch bei der Durchführung geschehen, also Bereich der Werte E23:E33 und auch wieder mit den Artikelnummern. Wäre es möglich, einen Abstand(zwei Zeilen) in Zeitberechnung zu machen und danach die Durchführungswerte. Könnte ich das von oben übernehmen, welche Werte müsste ich ändern?

    Zweite Frage: kann man sich eine Schaltfläche in Wochenplanung einrichten, welche das Makro (Daten Übertragung startet?)

    Vielen vielen Dank. Somit wäre das Thema so gut wie erledigt :)
     
    Philonous, 8. Juni 2014
    #5
  6. Beverly
    Beverly Erfahrener User
    Zu Frage 1: dann musst du die erste For-Next-Schleife zweimal hintereinander ablaufen lassen - zuerst so wie sie ist und dann noch einmal mit

    Code:
    lngZeile = 23 To 33
    und vorher selbstverständlich lngZiel um die entsprechende Zahl erhöhen, wie der Abstand zum vorherigen Block sein soll.

    Zu Frage 2: erstelle eine Formular-Schaltfläche und weise ihr das Makro zu.

    Bis später,
    Karin
     
    Beverly, 8. Juni 2014
    #6
  7. Philonous Erfahrener User
    So habe ich es mal versucht, funktioniert aber leider nicht:
    Code:
    Sub Zeitrechnung()
       Dim intSpalte As Integer
       Dim lngZeile As Long
       Dim lngZiel As Long
       lngZiel = 4
       For intSpalte = 5 To 27
          If intSpalte Mod 4 <> 0 Then
             If Application.Count(Range(Cells(10, intSpalte), Cells(20, intSpalte))) > 0 Then
                For lngZeile = 10 To 20
                   If Cells(lngZeile, intSpalte) <> "" Then
                      Worksheets("Zeitberechnung").Cells(lngZiel, 1) = Cells(lngZeile, 2)
                      Worksheets("Zeitberechnung").Cells(lngZiel, 2) = Cells(lngZeile, intSpalte)
                      lngZiel = lngZiel + 1
                      If Application.Count(Range(Cells(lngZeile + 1, intSpalte), _
                         Cells(20, intSpalte))) = 0 Then Exit For
                   End If
                Next lngZeile
             End If
          End If
       Next intSpalte
       
       lngZiel = 5
       For intSpalte = 5 To 27
          If intSpalte Mod 4 <> 0 Then
             If Application.Count(Range(Cells(10, intSpalte), Cells(20, intSpalte))) > 0 Then
                For lngZeile = 23 To 33
                   If Cells(lngZeile, intSpalte) <> "" Then
                      Worksheets("Zeitberechnung").Cells(lngZiel, 1) = Cells(lngZeile, 2)
                      Worksheets("Zeitberechnung").Cells(lngZiel, 2) = Cells(lngZeile, intSpalte)
                      lngZiel = lngZiel + 1
                      If Application.Count(Range(Cells(lngZeile + 1, intSpalte), _
                         Cells(20, intSpalte))) = 0 Then Exit For
                   End If
                Next lngZeile
             End If
          End If
       Next intSpalte
    End Sub
    
     
    Philonous, 8. Juni 2014
    #7
  8. Beverly
    Beverly Erfahrener User

    VBA Tabelle durchsuchen und Zellen übertragen

    Es wäre auch schön, wenn du genau beschreiben würdest, WAS genau nicht funktioniert, sodass man konkret darauf antworten kann.

    Bis später,
    Karin
     
    Beverly, 8. Juni 2014
    #8
  9. Philonous Erfahrener User
    Der obere Tabellenbereich E10:AA20 funktioniert einwandfrei mit Artikelnummern, also Planung.

    Der untere Tabellenbereich E23:AA33 funktioniert nicht, es werden keine Artikelnummern mit Produktionsmengen in die Zeitberechnung kopiert.

    Hast du eine Vermutung, woran es liegen könnte?
     
    Philonous, 8. Juni 2014
    #9
  10. Beverly
    Beverly Erfahrener User
    Die Variable lngZiel steht für die Zeilennummer, in die in Tabelle Zeitberechnung geschrieben werden soll. Mit deiner Codezeile

    Code:
    lngZiel = 5 
    vor dem zweiten Durchlauf setzt du die Zeilennummer auf 5 zurück, obwohl der letzte Eintrag aus dem oberen Bereich z.B. in Zeile 13 erfolgt ist - folglich werden alle neuen Einträge ab Zeile 5 getätigt und die bereits vorhandenen Daten überschrieben. Du musst also zu der aktuellen Zeilenzahl des ersten Durchlaufs (z.B. 13) den Abstand addieren - so wie es bereits innerhalb der For lngZeile-Schleife gemacht wird, wo die Zeilennummer jeweils um 1 erhöht wird, wenn ein Eintrag erfolgt ist. Alles klar? :)

    Bis später,
    Karin
     
    Beverly, 8. Juni 2014
    #10
  11. Philonous Erfahrener User
    Alles klar! Super, erklärt. So funktioniert es auch gleich :)

    Allerdings nicht ganz. Bei der unteren Tabelle hat er mir jetzt die Werte nicht ganz ordnungsgemäß wie oben übertragen.

    So hätte er mit - 100i (Menge: 480) anfangen soll, hat aber mit 100a (Menge: 336) begonnen. Zudem lässt er zwei Werte(Artikelnr: 402,505) komplett aus.

    Haben wir einen Fehler übersehen?
     
    Philonous, 8. Juni 2014
    #11
  12. Beverly
    Beverly Erfahrener User
    Im zweiten Durchlauf steht bei dir

    Code:
    If Application.Count(Range(Cells([COLOR=#ff0000][B]10[/B][/COLOR], intSpalte), Cells([COLOR=#ff0000][B]20[/B][/COLOR], intSpalte)))
    d.h. du vergleichst wieder im Bereich der Zeilen 10 bis 20, es muss aber der Bereich 23 bis 33 sein.


    Ich denke, die Erklärung für lngZiel hast du doch noch nicht ganz verstanden - bist du dir sicher, dass es beim 2. Durchlauf immer Zeile 16 sein wird? Was passiert, wenn im ersten Bereich 25 Werte stehen? Dann ist es bestimmt nicht mehr Zeile 16, ab der die neuen Daten eingetragen werden sollen. Du darfst also den Wert nicht einfach fix setzen (was deine zeile lngZiel = 16 macht) sondern variabel, indem du zur letzten ermittelten Zeile deinen Abstand (z.B. 4) addierst - die neue Zeile ergibt sich also aus aktueller Zeile + 4. Es muss also an dieser Stelle heißen:

    lngZiel = lngZiel + 4 :)

    Bis später,
    Karin
     
    Beverly, 8. Juni 2014
    #12
  13. Philonous Erfahrener User

    VBA Tabelle durchsuchen und Zellen übertragen

    Wie verständlich es einfach sein kann.

    Perfekt! Erste Sahne,....funktioniert!

    Vielen Dank.
     
    Philonous, 8. Juni 2014
    #13
Thema:

VBA Tabelle durchsuchen und Zellen übertragen

Die Seite wird geladen...
  1. VBA Tabelle durchsuchen und Zellen übertragen - Similar Threads - VBA Tabelle durchsuchen

  2. VBA Auslesen von Strings und erstellen neuer Zeilen in einer Tabelle

    in Microsoft Excel Hilfe
    VBA Auslesen von Strings und erstellen neuer Zeilen in einer Tabelle: Guten Tag zusammen In der 1. Spalte stehen KundenIDs (jeweils 2 Buchstaben), separiert mit einem Komma. Beispielsweise: ag,ok,be,li,ce In der 2. bis 15. Spalte stehen dann diverse Eigenschaften,...
  3. VBA - Datensätze ans Ende einer anderen Tabelle kopieren

    in Microsoft Excel Hilfe
    VBA - Datensätze ans Ende einer anderen Tabelle kopieren: Hallo zusammen, ich habe gerade eine "Abrechnungs"-Datei für einen Kindergartenbasar erstellt. Es wäre klasse, wenn man per Schaltfläche die Datensätze aus der Tabelle "Kaeufer" ans Ende der...
  4. Array aus Excel Tabelle einlesen Word VBA

    in Microsoft Excel Hilfe
    Array aus Excel Tabelle einlesen Word VBA: Hallo, ich benötige in einer Word Datei die Werte einer Excel Datei. Ich würde gerne eine Spalte als Array einlesen. Wie das Array ein lesen in Excel geht weiß ich, aber wie schaffe ich den...
  5. Dynamische Tabellen mit automatischer Aktualisierung

    in Microsoft Excel Hilfe
    Dynamische Tabellen mit automatischer Aktualisierung: Hallo in die Runde! Vorab schon mal vielen Dank für alle Mühen und die Hilfe! Ich habe folgendes Anliegen: Ich habe eine Geräteliste als Excel Datei mit einigen verschiedenen Tabellenblättern...
  6. VBA Makro: Tabelle nach 2 Kriterien durchsuchen & in diese Zeile weitere Werte eintragen

    in Microsoft Excel Hilfe
    VBA Makro: Tabelle nach 2 Kriterien durchsuchen & in diese Zeile weitere Werte eintragen: Hi Zusammen, langsam bin ich am verzweifeln, da ich mich nicht perfekt in VBA auskenne und zu keiner Lösung komme. Grundlegend möchte ich das "Tool" per 3. Tabelle öffnen (Speicherorte sollen...
  7. per Makro VBA csv durchsuchen und Tabellen anlegen

    in Microsoft Excel Hilfe
    per Makro VBA csv durchsuchen und Tabellen anlegen: Hallo Liebes MS Office Forum Gemeinde, vor ab finde ich super das es eine Plattform gibt um mit anderen Personen Themen über MS Office Probleme, Lösungen Ansätze zu teilen. VBA ist für mich...
  8. Tabelle durchsuchen per VBA

    in Microsoft Access Hilfe
    Tabelle durchsuchen per VBA: Hallo, ich würde gerne vor dem Schreiben von Daten in die Tabelle zuerst überprüfen, ob bereits Einträge mit dem gleichen Datum und der gleichen Schicht vorhanden sind. Falls ein Eintrag mit den...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden