Excel Daten von einer Tabelle in andere einfügen
Hallo,
ich habe eine Frage: ich würde gerne ein VBA Tool schreiben, mit dem ich die Werte aus einer Excel Tabelle in eine andere übertragen will. Die neue Tabelle sollte dabei automatisiert erstellt werden. Wie gehe ich da vor? Bin leider noch nicht so sehr erfahren mit VBA. Würde mich über jede Hilfe sehr freuen!! |
Moin,
gibt viele Wege das zu lösen. Der Einfachheit halber würde ich dir empfehlen, die Daten vorerst von einem Tabellenblatt, in das nächste zu kopieren. Excel hat diesen tollen Makrorekorder. Wenn du den anschmeißt, ein bisschen rumklickst, bzw. einige Zellen markierst (oder ganze Bereiche) und dir dann danach den Code anschaust, kommst du relativ schnell dahinter. Du siehst dann oft solche Schlagworte wie Zitat:
Da ich deine Programmierkenntnisse nicht kenne erklär ichs einfach mal für "doofies": Den Wert einer Zelle bekommst du durch den Befehl .Value. Den Wert einer Zelle schreibst du auch mit dem Befehl .Value. Du musst nur beide richtig anwenden. Sagen wir du willst eine Zelle(Cell) oder einen Bereich(Range) von "Tabellenblatt1" nach "Tabellenblatt2" kopieren: Zitat:
Wenn das Makro Exceldateien übergreifend sein soll, brauchst du noch das Schlagwort Workbook: Zitat:
[Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...] (Copy) [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...] (Paste) |
Meinst du aus einem anderen Tabellenblatt, oder aus einer komplett anderen Excel-Datei?
Mir half es am Anfang immer den Recorder zu nutzen. Du zeichnest also auf was du machst, und kannst dir nachher den entsprechenden Code anzeigen lassen und diesen nach deinen Wünschen bearbeiten |
Hier mal ein kleines Beispiel:
Lege dir einen Commandbutton auf das Blatt von dem die Werte stammen und füge folgendes als Code für das Blatt ein... Code:
Private Sub CommandButton1_Click() Ansonsten braucht man einfach mehr Infos, sonst raten wir hier ins Blaue...:T |
Ich arbeite täglich mit Excel, aber wenn ich das lese, muss ich erkennen dass ich fast keine Ahnung von der Software habe... :rolleyes::o
|
@Rasiererkönig
Mit Excel bzw. VBA geht "fast" alles incl. der Zugriff auf das Dateisystem. Man könnte sich quasi seinen eigenen Dateimanager programmieren. Ich war in VBA vor Jahren noch deutlich fitter, aber sooo oft arbeite ich damit auch nicht mehr. Zu meinen Vorrednern Draien und ThreeChord muss ich noch anmerken, dass sie zwar Recht haben, dass der Makrorekorder als Einstieg recht nützlich ist, aber er stößt leider sehr sehr schnell an seine Grenzen. Aber auch ich habe damit mal angefangen und es mir dann peu a peu selbst beigebracht. Daher ist mein "Programmierstil" (wenn man ihn überhaupt so nennen kann :D ) nicht gerade professionell, aber Hauptsache es funktioniert...:T Speziell zu Draien muss ich noch sagen, dass etwas so nicht funktionieren dürfte... Dieser Befehl z.B. wird kaum ohne Fehler funktionieren (könnte es sein, dass das die Syntax aus OpenOffice ist?) Code:
Worksheets("Tabellenblatt2").Cell('A1').Value = Worksheets("Tabellenblatt1").Cell('A1').Value Code:
Worksheets("Tabellenblatt2").Cells(1,1).Value = Worksheets("Tabellenblatt1").Cells(1,1).Value |
Also erstmal danke für die Antworten.
Was ich brauche ist folgendes: Und zwar habe ich mir da zwei Beispieldateien erstellt, wo ich das gerne anwenden würde. Was ich machen will ist folgendes: ich habe eine Liste mit Monaten drin, welche in jeder Woche die Anzahl der Tage angibt, in welchen eine Maschine benutzt wurde und von welchem Hersteller die Maschine stammt. Jetzt habe ich noch eine andere Liste, wo auch die Wochentage angegeben sind. Die Anzahl der Wochentage will ich jetzt von der einen Liste in die andere übertragen und zwar per button. Das heißt, auf der einen Tabelle sind ja unsere Maschinen angegeben und z.B. im Monat März die Anzahl der Benutzung in der Woche ( z.B. 3-Mal). Das soll jetzt in die andere Tabelle übertragen werden. Die andere Tabelle enthält dann die Tage wo die Maschine benutzt wurde bzw. nicht benutzt wurde. Die eine Tabelle enthält alle Monate, aber nur mit Wochen aufgeteilt. Da steht dann z.B. in der Woche 01 im März 2017 die Ziffer 3. Das bedeutet, die Maschine wird 3-Mal in der Woche genutzt. Die Tabelle wo diese Information hinsoll, enthält nur den Monat März, aber auch die Wochentage. Und das soll dann so aussehen, dass die Wochentage, in welchen die Maschine genutzt wird, farblich dargestellt werden und da wo nicht, weiß. Und das will ich als Makro haben, wenn es geht. EDIT: Da sind die beiden Beispiel-Dateien zu finden: [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...] |
Sorry, aber wer hat sich denn sowas einfallen lassen?:mad: Zum einen sind ja die Kalenderwochen flexibel und nicht deckungsgleich mit einem Monat. Fällt z.B. MO, Di noch in den Februar und der Rest in den März und an allen Tagen wird die Maschine benutzt, macht das doch schon wenig Sinn.
Zitat:
Warum sind dafür überhaupt mehrere Dateien notwendig? Und warum nicht für das ganze Jahr nur 1 Tabellenblatt, anstatt für jeden Monat eine Datei/Tabellenblatt? Entscheidend für das Makro ist die Wiederholbarkeit und Struktur der Tabelle. Für mich persönlich sieht das (und das ist nicht böse gemeint) irgendwie wenig durchdacht aus. Aber "theoretisch" und somit hier auch praktisch wäre "sowas in der Art" möglich. |
Ich kann leider keine Dateien von meinem Betrieb Posten. Daher auch das Beispiel mit der Maschinenbelegung. Ja, das Beispiel ist nicht gut durchdacht. Es geht hier nur um das Prinzip, Tabellenwerte rüberzukopieren. Bei den richtigen Tabellen geht es um Urlaubstage und diese sollen in eine Anwesenheitsliste übertragen werden.
Kannst du mir zeigen wie ich nun das so rüberkopieren kann per Makro ? |
Zitat:
Zitat:
Code:
Workbooks("Maschinenbelegung.xlsx").Sheets("Tabelle1").Range("O5").Value = Application.WorksheetFunction.Sum(Range("U9:Y9")) Code:
Private Sub CommandButton1_Click() Code:
=SUMME([Maschinennutzung.xlsx]Tabelle1!$U$9:$Y$9) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:19 Uhr. |
Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.