MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 20.07.2018, 10:37   #1
immer_neue_Probleme
Neuer Benutzer
Neuer Benutzer
Standard VBA - Wenn Wert gefunden wird Zellen kopieren und an anderer Stelle einfügen.

Hallo,

habe ein Problem, das ich nicht gelöst bekomme. bzw. nur sehr umständlich.
Habe eine Spalte die ich bei Bedarf Reseten muss. Bis jetzt hab ich es so gelöst, dass ich für jeden Bereich ein eigenes Makro geschrieben hab. Und die verschiedenen Bereiche in einem anderem Makro per Call alle aufrufe.
Hier mal der Code, wie ich ihn bisher benutze.

Code:

Sub PLAN_30100_PLB1()
'
' PLAN_30100_PLB1 Makro
'

'
    Range("M10:M19").Select
    Selection.Copy
    Range("K10").Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    Range("K10").Select
End Sub
Sub PLAN_30110_PLB1()
'
' PLAN_30110_PLB1 Makro
'

'
    Range("M21:M30").Select
    Selection.Copy
    Range("K21").Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    Range("K21").Select
End Sub
Sub PLAN_Formel_Reset_PLB1()
'
' PLAN_Formel_Reset_PLB1 Makro
'

'

    Call PLAN_30100_PLB1
    Call PLAN_30110_PLB1
    Call PLAN_30200_PLB1
    Call PLAN_30210_PLB1
    Call PLAN_31110_PLB1
    Call PLAN_31111_PLB1
    Call PLAN_31120_PLB1
    Call PLAN_31121_PLB1
    Call PLAN_31130_PLB1
    Call PLAN_31131_PLB1
    Call PLAN_31210_PLB1
    Call PLAN_31211_PLB1
    Call PLAN_31212_PLB1
    Call PLAN_31220_PLB1
    Call PLAN_31230_PLB1
    Call PLAN_31290_PLB1
    Call PLAN_31310_PLB1
    Call PLAN_31311_PLB1
    Call PLAN_31320_PLB1
    Call PLAN_31321_PLB1
    Call PLAN_31322_PLB1
    Call PLAN_31390_PLB1
    Call PLAN_31410_PLB1
    Call PLAN_31411_PLB1
    Call PLAN_31412_PLB1
    Call PLAN_31420_PLB1
    Call PLAN_31421_PLB1
    Call PLAN_31490_PLB1
    Call PLAN_32100_PLB1
    Call PLAN_32111_PLB1
    Call PLAN_32200_PLB1
    Call PLAN_32211_PLB1
    Call PLAN_32300_PLB1
    Call PLAN_32400_PLB1
    Call PLAN_32411_PLB1
    Call PLAN_32900_PLB1
    Call PLAN_33100_PLB1
    Call PLAN_34100_PLB1
    Call PLAN_34200_PLB1
    Call PLAN_34310_PLB1
    Call PLAN_34320_PLB1
    Call PLAN_34400_PLB1
    Call PLAN_34900_PLB1
    Call PLAN_34950_PLB1
    Call PLAN_35100_PLB1
    Call PLAN_35200_PLB1
    Call PLAN_35400_PLB1
    Call PLAN_35500_PLB1
    Call PLAN_35600_PLB1
    Call PLAN_49000_PLB1
    Call PLAN_36100_PLB1
    Call PLAN_37100_PLB1
    Call PLAN_39100_PLB1
    Call PLAN_39200_PLB1
    Call PLAN_40100_PLB1
    Call PLAN_40200_PLB1
    Call PLAN_41100_PLB1
    Call PLAN_41200_PLB1
    Call PLAN_41300_PLB1
    Call PLAN_41400_PLB1
    Call PLAN_41500_PLB1
    Call PLAN_41600_PLB1
    Call PLAN_41700_PLB1
    Call PLAN_41750_PLB1
    Call PLAN_41800_PLB1
    Call PLAN_41850_PLB1
    Call PLAN_41900_PLB1
    Call PLAN_41950_PLB1
    Call PLAN_42100_PLB1
    
    Range("J9").Select
End Sub
Dies hat aber zur Folge, dass ich pro Arbeitsblatt 500 Makros brauche. (Ich hab aber zehn)

Ich bin mir sicher, dass einer von euch eine bessere Lösung parat hat.
Ich weiß nicht wie ich´s hinbekommen soll, das es folgendermaßen funktioniert.
Immer wenn in Spalte Y ein Wert gefunden wird, sollen die 10 darunter liegenden Zellen von Spalte M nach Spalte K kopiert werden. Und das solange bis in Spalte Y keine Werte mehr kommen.

Ich hoffe, ich hab`s halbwegs verständlich rüberbringen können.

Gruß
immer_neue_Probleme ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 20.07.2018, 13:41   #2
Beverly
MOF Guru
MOF Guru
Standard

Hi,

meinst du so etwas:

Code:

Sub Kopieren()
    Dim lngZeile As Long
    For lngZeile = 10 To Columns("Y").Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row Step 10
        Range(Cells(lngZeile, 13), Cells(lngZeile + 9, 13)).Copy
        Cells(lngZeile, 11).PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        lngZeile = lngZeile + 1
    Next lngZeile
End Sub


GrußformelBeverly's Excel - Inn

__________________

Bitte im Beitrag eine kurze Rückmeldung auch in dem Fall geben, wenn ein Problem gelöst wurde - dies hilft auch anderen Usern, wenn sie den betreffenden Thread lesen.
Möchtest du dich außerdem für die Hilfe bei der Lösung deines Problems bedanken? Das kannst du ganz einfach durch die Bewertung eines Beitrags (Schalter unten links).
Beverly ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 21.07.2018, 14:17   #3
immer_neue_Probleme
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Super, genau so etwas hab ich gesucht.
Allerdings gibt es noch einen kleinen Schönheitsfehler.
Der Vorschub um 9 Zeilen ist nicht immer zutreffend, da es Zwischenüberschriften gibt.
Hast du vielleicht hierfür auch noch eine Lösung???

Danke schon Mal
immer_neue_Probleme ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 21.07.2018, 15:14   #4
barbara_w
MOF User
MOF User
Standard

Hallo Unbekannte Namenlose,

wenn es Zwischenüberschriften gibt, kannst Du ja die 9 anpassen.

Leider weiß ich nicht, was Zwischenüberschriften sind oder woran man diese erkennt. Es ist auch nicht ersichtlich, wie die 9 anzupassen ist.

Was sind Zwischenüberschriften und woran erkennt man sie?

Was soll bei Zwischenüberschriften kopiert werden? Mehr? Weniger?

Eine Beispieldatei wäre nicht schlecht.

Karins Code kopiert M21:M31 in Spalte K, egal, ob in Y21 was steht oder nicht.

Das passt nicht zu:
"Immer wenn in Spalte Y ein Wert gefunden wird, sollen die 10 darunter liegenden Zellen von Spalte M nach Spalte K kopiert werden."

Weder Deine Makros, die Du mit Call aufrufst, noch Karins Vorschlag berücksichtigen Einträge in Spalte Y.

In diesem Zusammenhang verstehe ich nicht:
"Super, genau so etwas hab ich gesucht."

Offensichtlich hat das Karin richtig verstanden (oder die richtigen Annahmen getroffen) und konnte helfen.

LG,
Barbara
barbara_w ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 21.07.2018, 17:04   #5
immer_neue_Probleme
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo Barbara,

meine Aufrufe mit Call berücksichtigen die Spalte Y nicht, weil ich nicht weiß, wie ich es anstellen soll. Deshalb hätte ich mir ja einen Code vorgestellt, der die Spalte Y prüft und immer dann, wenn ein Wert vorhanden ist, die 10 darunter liegenden Zellen von Spalte M nach Spalte K kopiert.
Der Code von Beverly funktioniert ja, bis eine Zwischenüberschrift (hab diesmal einen Anhang vom Excel mit drangehängt) kommt.
Mit Zwischenüberschrift meine ich z.B. die Zeile 54 (Erträge aus XXXX)

Gruß
Thomas
Angehängte Grafiken
Dateityp: jpg ScreenShot.jpg (93,1 KB, 4x aufgerufen)
immer_neue_Probleme ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 21.07.2018, 17:27   #6
barbara_w
MOF User
MOF User
Standard

Erklär das mal Schritt für Schritt:

Etwa so:
Die y-Spalte hinuntergehen bis zum ersten Eintrag. Dann von der nächsten Zeile bis zur Zeile des nächsten Y-Eintrags Spalte M nach Spalte K kopieren.
Dann ...

Soviel Zeit muss sein.

Wenn Du eine Beispieldatei hochladest, erhöhst Du die Chancen auf brauchbare Antwort. (Vielleicht auch von mir, sobald ich Zeit habe ...)

LG,
Barbara
barbara_w ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 21.07.2018, 17:39   #7
Beverly
MOF Guru
MOF Guru
Standard

Hi,

welche Zeilen sollen denn nun kopiert werden in deinem hochgeladenen Screenshot?

Übrigens: Excel ist kein Bildbearbeitungsprogramm und kann mit Screenshots nichts anfangen - eine hochgeladene Beispielmappe dagegen erleichtert den Helfern das Helfen ungemein...


GrußformelBeverly's Excel - Inn

__________________

Bitte im Beitrag eine kurze Rückmeldung auch in dem Fall geben, wenn ein Problem gelöst wurde - dies hilft auch anderen Usern, wenn sie den betreffenden Thread lesen.
Möchtest du dich außerdem für die Hilfe bei der Lösung deines Problems bedanken? Das kannst du ganz einfach durch die Bewertung eines Beitrags (Schalter unten links).
Beverly ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 21.07.2018, 18:55   #8
immer_neue_Probleme
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo nochmal,

sorry das ich mich unverständlich (umständlich) ausgedrückt habe.
Ich versuche es nun so ausführlich wie möglich und auch was ich damit bezwecke. Außerdem lade ich eine etwas reduzierte Datei hoch.

Ich versuche hier ein Planungstool aufzubauen.
Ich hole mir hierzu aus einem anderem Vorsystem die Werte für die Spalten E (Ergebnis 2016) und H (Plan 2017) ab um eine Grundlage für die Planung 2018 zu haben und einen Verteilungsschlüssel errechnen zu können, damit die Planwerte 2018 in Spalte J verteilt werden können.
Bsp.:
Wenn in Zelle J 433 der Wert 5000 eingegeben wird, wird dieser Betrag anhand des Verteilungsschlüssels auf die Zellen J 436 / 438 / 440 verteilt. Gibt es keinen Schlüssel, wird der Betrag immer auf die erste Zeile genommen.

Die Spalte K soll dann eine individuelle Planung aufnehmen, die als Grundlage die Spalte J hat. Diese Grundlage habe ich als absolute Formel in der Spalte M hinterlegt.
Grund:
Wenn individuelle Werte in der Spalte K erfasst werden, überschreibt man ja die Formel und um einen Reset machen zu können, müssten die Formeln beim Ausführen des Reset die Formel aus der Spalte M in die Spalte K kopiert werden.

Der Reset Button sollte also folgende Funktion erfüllen:
Wenn in der Spalte Y9 der Wert gefunden wird, sollen die Formeln aus M10 bis M19 in K10 bis K19 kopiert werden.
Wert in Y20 dann Formel aus M21 bis M30 in K20 bis K30 kopieren
Wert in Y32 dann Formel aus M33 bis M42 in K33 bis K42 kopieren
Wert in Y43 dann Formel aus M44 bis M53 in K44 bis K53 kopieren
Wert in Y56 dann Formel aus M57 bis M66 in K57 bis K66 kopieren
Wert in Y67 dann Formel aus M68 bis M77 in K68 bis K77 kopieren
usw.

Ich hoffe, ihr könnt damit was anfangen und hab vielleicht eine Lösung für mich.

Danke schon mal für eure Geduld.

Gruß
Thomas
Angehängte Dateien
Dateityp: xlsm CP_Plan_über_CPExcel_PLB1_2.xlsm (186,2 KB, 4x aufgerufen)
immer_neue_Probleme ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 22.07.2018, 07:36   #9
Beverly
MOF Guru
MOF Guru
Standard

Hi Thomas,

Code:

Sub Kopieren()
    Dim lngZeile As Long
    For lngZeile = 9 To Columns("Y").Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
        If Cells(lngZeile, 25).Value <> "" Then
            Range(Cells(lngZeile + 1, 13), Cells(lngZeile + 10, 13)).Copy
            Cells(lngZeile + 1, 11).PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
                SkipBlanks:=False, Transpose:=False
        End If
    Next lngZeile
End Sub


GrußformelBeverly's Excel - Inn

__________________

Bitte im Beitrag eine kurze Rückmeldung auch in dem Fall geben, wenn ein Problem gelöst wurde - dies hilft auch anderen Usern, wenn sie den betreffenden Thread lesen.
Möchtest du dich außerdem für die Hilfe bei der Lösung deines Problems bedanken? Das kannst du ganz einfach durch die Bewertung eines Beitrags (Schalter unten links).
Beverly ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 22.07.2018, 19:55   #10
immer_neue_Probleme
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo Beverly,

funktioniert SUPER.
Vielen Vielen Dank für die Hilfe und die Geduld.

Gruß
Thomas
immer_neue_Probleme ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:44 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.