Das Clever-Excel-Forum.de - Treffen
findet vom 15. - 17. September 2017 in Thüringen / Region Großer Inselsberg statt. Hotelbuchung ab sofort möglich.


Makro zum Kopieren von Werten in anderes Tabellenblatt, unterschiedliche Benennung
#1
Hallo liebes Forum!
Zunächst einmal: ich bin neu hier und ein totaler Makro-Noob – also bitte Rücksicht nehmen. Das Problem fängt schon damit an, dass ich nicht genau weiß wonach ich googlen soll. Mein Problem ist bestimmt nicht neu und mit Sicherheit schon hundert Mal behandelt worden, aber scheinbar nutze ich die falschen Stichwörter.

Programm-Version: Excel 2010

Mein Problem: Ich möchte aus einer variablen Anzahl Tabellenblättern jeweils einen Zahlenwert (zwischen 0 und zehn) kopieren und dann auf einem Übersichts-Tabellenblatt einfügen. Die Spalte in welche die Werte eingetragen werden sollen beginnt bei B2 und kann beliebig fortgesetzt werden (B3, B4 usw.).
Die Reihenfolge meiner Tabellenblätter im Dokument sieht so aus: Übersichtsblatt, Blanko-Blatt, S1, S2, S3 …
Die Blätter S1, S2 usw. sind alle gleich aufgebaut, enthalten nur unterschiedliche Zahlen. Den Wert aus Zelle K14 dieser Blätter möchte ich auf dem Übersichtsblatt anzeigen lassen. Der Wert ist auch immer in der gleichen Zelle K14.
Die Bezeichnung der Blätter S1, S2 usw. variiert. D.h. die heißen auch mal P1 oder M4.
Manuell bekomm ich das hin, dass mir die Werte angezeigt werden (z.B. ='P1'!K14    oder    ='M2'!K14). Allerdings ist das ab einer bestimmten Blattanzahl etwas mühsam. Deswegen hätte ich am liebsten ein Makro was die Werte kopiert und in die Übersichtstabelle einfügt.
Dummerweise habe ich von Makro-Programmierung so viel Ahnung wie die Kuh vom Fallschirmspringen. Meine Suchen ergaben verschiedene Ergebnisse in Form von Schleifen und sonstigem. Allerdings hört es bei mir ja schon mit der Auswahl des Tabellenblattes auf …
Was ich mir schon erschlossen habe, ist die Auswahl der Zelle im jeweiligen Tabellenblatt und das Kopieren selbiger:


Code:
Range("K14").Select
Selection.Copy

Hier darf kurz gelacht werden 17
Allerdings hilft mir das ja auch nicht wirklich weiter, weil bis dato der Wert ja nur in den Zwischenspeicher gewandert ist. Und noch weit davon entfernt ist, in meiner Übersichtstabelle zu erscheinen.

Wenn ich den manuellen Vorgang mit dem Makro-Recorder aufzeichne (ich starte vom Übersichtsblatt aus), sieht das wie folgt aus:


Code:
Sub Kritikalitaetswert()
'
' Kritikalitaetswert Makro
' Kritikalitätswert aus anderen Tabellenblättern entnehmen und in die Übersichtstabelle kopieren.
'
'
   Range("B2").Select
   ActiveCell.FormulaR1C1 = "='P1'!R[12]C[9]"
   Range("B3").Select
   ActiveCell.FormulaR1C1 = "='P2'!R[11]C[9]"
   Range("B4").Select
   ActiveCell.FormulaR1C1 = "='P3'!R[10]C[9]"
   Range("B5").Select
   ActiveCell.FormulaR1C1 = "='P4'!R[9]C[9]"
   Range("B6").Select
   ActiveCell.FormulaR1C1 = "='I1'!R[8]C[9]"
   Range("B7").Select
   ActiveCell.FormulaR1C1 = "='I2'!R[7]C[9]"
   Range("B8").Select
   ActiveCell.FormulaR1C1 = "='I3'!R[6]C[9]"
   Range("B9").Select
   ActiveCell.FormulaR1C1 = "='M2'!R[5]C[9]"
   Range("B10").Select
End Sub


Das macht dann auch ganz brav was es soll, aber halt nur für die Tabellenblätter die P1-P4, I1-I3 und M2 heißen. Es sollen aber alle K14-Werte aller Tabellenblätter aufgeführt werden – z.B. auch wenn ich ein weiteres Tabellenblatt einfüge.
Hilfe wäre toll – und bitte auf gaaaaanz einfachem Niveau erklären.
Vielen Dank im Voraus!
to top
#2
Hallo Rollenlager,

das sollte dann mit einer Schleife gehen.
Alle Blätter bekommt man z.B. mit

For Each Blaetter in Sheets
...
Next


Statt kopieren würde ich den Wert übernehmen.

For Each Blaetter in Sheets
Range("B2")=Blaetter.Range("K14")
Next


Und dann muss das natürlich immer eine Zeile nach unten gesetzt werden. Dazu könnte man einen Zähler nehmen und statt mit Range mit Cells arbeiten.


iCnt=2
For Each Blaetter in Sheets
Cells(iCnt, 2)=Blaetter.Range("K14")
iCnt=iCnt+1
Next


Voraussetzung ist, dass Du beim Start des Makro auf dem Zusammenfassungsblatt bist.
Allerdings wird Dir so auch der Wert vom Zusammenfassungsblatt mit eingetragen. Wäre das ok oder soll das ausgeschlossen werden?
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
[-] Folgende(r) 1 Benutzer sagt Danke an schauan für diesen Beitrag:
Rollenlager
to top
#3
Hallo "Schauan".

Vielen, vielen Dank für Deine Hilfe! Hat sehr gut funktioniert und macht genau das, was es soll.
Das Problem mit der Anzeige des Blanko-Blattes wurde gelöst, indem die entsprechende Zeile auf dem Übersichtsblatt einfach ausgeblendet wurde Wink  Sicherlich nicht im Sinne des Erfinders, aber praktikabel.

Danke nochmal!
to top
#4
Hallo,

Makro so ergänzen:



Code:
iCnt=2
For Each Blaetter in Sheets
   if Blaetter.name<>"Blank-Blatt" then
      Cells(iCnt, 2)=Blaetter.Range("K14")
      iCnt=iCnt+1
   end if
Next
Gruß


Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
to top


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Filtern Liste und Daten auf anderes Sheet kopieren Rabe 8 111 Vor 6 Stunden
Letzter Beitrag: Rabe
Photo Makro zum Kopieren bis eine leere Zeile kommt ambropete 0 20 Vor 9 Stunden
Letzter Beitrag: ambropete
  Unterschiedliche Zellen zählen und quantitativ bewerten joshua 1 49 03.12.2016, 23:46
Letzter Beitrag: schauan
  Unterschiedliche Ergebnisse Bighead 2 37 03.12.2016, 11:57
Letzter Beitrag: Kuwer
  (berechnete) Teilbereiche in anderes Blatt kopieren Timo 12 223 23.11.2016, 16:29
Letzter Beitrag: Gast 123
  VB Daten in anderes Tabellenblatt übertragen derhanfti 3 98 07.11.2016, 07:56
Letzter Beitrag: derhanfti
  Tabellenblatt Kopieren und mit Namen versehen knallebumm 2 132 30.10.2016, 16:35
Letzter Beitrag: knallebumm
  Tabellenblatt mit Diagramm kopieren... radagast 9 132 28.10.2016, 11:42
Letzter Beitrag: schauan
  Daten nach Entscheidung in anderes Blatt schreiben appelschnut 5 96 27.10.2016, 17:03
Letzter Beitrag: appelschnut
  Bei gleichen Werten Nachbarzellen kopieren Mikesch 6 125 17.10.2016, 10:31
Letzter Beitrag: Mikesch

Gehe zu:


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