myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Computer & Technik > Programmierung
Seite neu laden

Excel Daten von einer Tabelle in andere einfügen

Antwort
Themen-Optionen Ansicht
Ungelesen 22.01.17, 16:01   #1
Mixer007
Anfänger
 
Registriert seit: Apr 2013
Beiträge: 9
Bedankt: 0
Mixer007 ist noch neu hier! | 0 Respekt Punkte
Standard 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!!
Mixer007 ist offline   Mit Zitat antworten
Ungelesen 22.01.17, 16:25   #2
Draien
Anfänger
 
Registriert seit: Aug 2009
Beiträge: 30
Bedankt: 4
Draien ist noch neu hier! | 0 Respekt Punkte
Standard

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:
Worksheets("Tabelle1").Range("A1:B2").Select
Sprich er hat in der Tabelle1 (Tabellenblatt) den Bereich "markiert". Er wird diesen bereich jedesmal markieren, wenn du das Makro ausführst. (das kannst du dann auch auf einen Button legen)

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:
Worksheets("Tabellenblatt2").Cell('A1').Value = Worksheets("Tabellenblatt1").Cell('A1').Value
Das Gleiche eben auch für Range (aber vorsichtig sein). Wenn sich die Zellen ändern, müsstest du überlegen, wie du die richtigen Zellen ansprichst. Eventuell eine Variable als String (Dim xyz as String)?

Wenn das Makro Exceldateien übergreifend sein soll, brauchst du noch das Schlagwort Workbook:

Zitat:
Workbooks("Datei2.xlsx").Worksheets("Tabelle1").Ra nge("A1").Value = Workbooks("Datei1.xlsx").Worksheets("Tabelle1").Ra nge("A1").Value
Das ist zwar nicht die Musterlösung aber sollte vorerst reichen. Wenn du mehrmals kopieren möchtest (oder mehr als nur inhalte) schau dir das an:

[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ] (Copy)
[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ] (Paste)
Draien ist offline   Mit Zitat antworten
Ungelesen 22.01.17, 16:26   #3
ThreeChord
Rente
 
Registriert seit: Oct 2015
Beiträge: 633
Bedankt: 445
ThreeChord erschlägt nachts Börsenmakler | 14955 Respekt PunkteThreeChord erschlägt nachts Börsenmakler | 14955 Respekt PunkteThreeChord erschlägt nachts Börsenmakler | 14955 Respekt PunkteThreeChord erschlägt nachts Börsenmakler | 14955 Respekt PunkteThreeChord erschlägt nachts Börsenmakler | 14955 Respekt PunkteThreeChord erschlägt nachts Börsenmakler | 14955 Respekt PunkteThreeChord erschlägt nachts Börsenmakler | 14955 Respekt PunkteThreeChord erschlägt nachts Börsenmakler | 14955 Respekt PunkteThreeChord erschlägt nachts Börsenmakler | 14955 Respekt PunkteThreeChord erschlägt nachts Börsenmakler | 14955 Respekt PunkteThreeChord erschlägt nachts Börsenmakler | 14955 Respekt Punkte
Standard

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
ThreeChord ist offline   Mit Zitat antworten
Ungelesen 22.01.17, 19:43   #4
eitch100
Agnostiker
 
Benutzerbild von eitch100
 
Registriert seit: Dec 2009
Beiträge: 4.200
Bedankt: 4.430
eitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkte
Standard

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()
Dim myname
myname = "Werte_" & Format(Now, "dd-mm-yyyy_hhmmss")
Selection.Copy
Worksheets.Add.Name = myname
Sheets(myname).Range("C1").PasteSpecial xlValues
Application.CutCopyMode = False
End Sub
Damit werden die markierten Werte des aktuelles Blattes auf einem neu eingefügten Blatt ab Zelle C1 eingefügt. Das neue Blatt heißt immer Werte_ und hat als Zusatz das aktuelle Datum und die aktuelle Uhrzeit.

Ansonsten braucht man einfach mehr Infos, sonst raten wir hier ins Blaue...
__________________
Der Klügere gibt nach... deshalb regieren die Dummen die Welt
eitch100 ist offline   Mit Zitat antworten
Ungelesen 22.01.17, 21:29   #5
Rasiererkönig
Atheist
 
Benutzerbild von Rasiererkönig
 
Registriert seit: Sep 2010
Beiträge: 1.054
Bedankt: 668
Rasiererkönig leckt gerne myGully Deckel in der Kanalisation! | 723089645 Respekt PunkteRasiererkönig leckt gerne myGully Deckel in der Kanalisation! | 723089645 Respekt PunkteRasiererkönig leckt gerne myGully Deckel in der Kanalisation! | 723089645 Respekt PunkteRasiererkönig leckt gerne myGully Deckel in der Kanalisation! | 723089645 Respekt PunkteRasiererkönig leckt gerne myGully Deckel in der Kanalisation! | 723089645 Respekt PunkteRasiererkönig leckt gerne myGully Deckel in der Kanalisation! | 723089645 Respekt PunkteRasiererkönig leckt gerne myGully Deckel in der Kanalisation! | 723089645 Respekt PunkteRasiererkönig leckt gerne myGully Deckel in der Kanalisation! | 723089645 Respekt PunkteRasiererkönig leckt gerne myGully Deckel in der Kanalisation! | 723089645 Respekt PunkteRasiererkönig leckt gerne myGully Deckel in der Kanalisation! | 723089645 Respekt PunkteRasiererkönig leckt gerne myGully Deckel in der Kanalisation! | 723089645 Respekt Punkte
Standard

Ich arbeite täglich mit Excel, aber wenn ich das lese, muss ich erkennen dass ich fast keine Ahnung von der Software habe...
__________________
Wünsche einen angenehmen Tag und danke für's Lesen!
Rasiererkönig ist offline   Mit Zitat antworten
Ungelesen 23.01.17, 10:57   #6
eitch100
Agnostiker
 
Benutzerbild von eitch100
 
Registriert seit: Dec 2009
Beiträge: 4.200
Bedankt: 4.430
eitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkte
Standard

@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 ) nicht gerade professionell, aber Hauptsache es funktioniert...

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
Folgende 3 Alternativen fielen mir ein, wenn man es denn überhaupt so lösen sollte.
Code:
Worksheets("Tabellenblatt2").Cells(1,1).Value = Worksheets("Tabellenblatt1").Cells(1,1).Value

Worksheets("Tabellenblatt2").Range("A1").Value = Worksheets("Tabellenblatt1").Range("A1").Value

Worksheets("Tabellenblatt2").[A1].Value = Worksheets("Tabellenblatt1").[A1].Value
Und es bringt auch nichts, einfach eine Variable zu definieren, wenn sich die Zeile oder Spalte einer Zelle ändert. Das muss man anders lösen.
__________________
Der Klügere gibt nach... deshalb regieren die Dummen die Welt
eitch100 ist offline   Mit Zitat antworten
Ungelesen 24.01.17, 17:15   #7
Mixer007
Anfänger
 
Registriert seit: Apr 2013
Beiträge: 9
Bedankt: 0
Mixer007 ist noch neu hier! | 0 Respekt Punkte
Standard

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 Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
Mixer007 ist offline   Mit Zitat antworten
Ungelesen 24.01.17, 19:23   #8
eitch100
Agnostiker
 
Benutzerbild von eitch100
 
Registriert seit: Dec 2009
Beiträge: 4.200
Bedankt: 4.430
eitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkte
Standard

Sorry, aber wer hat sich denn sowas einfallen lassen? 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:
Zitat von Mixer007 Beitrag anzeigen
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 woher soll das Programm wissen, an welchen Tagen der Woche die Maschine benutzt wird, wenn man nur die Anzahl der Wochenbenutzungen kennt? Denn so habe ich dein Vorhaben verstanden. Andersherum würde ich es ja noch nachvollziehen können.

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.
__________________
Der Klügere gibt nach... deshalb regieren die Dummen die Welt
eitch100 ist offline   Mit Zitat antworten
Ungelesen 24.01.17, 19:45   #9
Mixer007
Anfänger
 
Registriert seit: Apr 2013
Beiträge: 9
Bedankt: 0
Mixer007 ist noch neu hier! | 0 Respekt Punkte
Standard

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 ?
Mixer007 ist offline   Mit Zitat antworten
Ungelesen 25.01.17, 11:23   #10
eitch100
Agnostiker
 
Benutzerbild von eitch100
 
Registriert seit: Dec 2009
Beiträge: 4.200
Bedankt: 4.430
eitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkteeitch100 leckt gerne myGully Deckel in der Kanalisation! | 1104671402 Respekt Punkte
Standard

Zitat:
Zitat von Mixer007 Beitrag anzeigen
Ich kann leider keine Dateien von meinem Betrieb posten.
Das verstehe ich selbstverständlich.
Zitat:
Zitat von Mixer007 Beitrag anzeigen
Kannst du mir zeigen wie ich nun das so rüberkopieren kann per Makro ?
Da gibt es nun ohne Ende Möglichkeiten, wie man das löst. Aber man muss genau wissen, was der Code tun soll. Hier mal ein ganz billiges Beispiel für deine geposteten Dateien. Angenommen es sind beide Dateien geöffnet. In der Datei "Maschinennutzung" sind angenommen in Zeile 9 KW11 am Mo, Mi und Fr jeweils eine 1 eingetragen. Mit folgendem Code werden die nun addiert und in "Maschinenbelegung" in Zelle O5 eingetragen.
Code:
Workbooks("Maschinenbelegung.xlsx").Sheets("Tabelle1").Range("O5").Value = Application.WorksheetFunction.Sum(Range("U9:Y9"))
Der Code muss natürlich in irgendeine Prozedur wie z.B. ein (Command)Button.
Code:
Private Sub CommandButton1_Click()
Workbooks("Maschinenbelegung.xlsx").Sheets("Tabelle1").Range("O5").Value = Application.WorksheetFunction.Sum(Range("U9:Y9"))
End Sub
Allerdings wird dir das nicht viel helfen, weil ja vermutlich verschiedenste Zellen, von verschiedenen Maschinen bzw. Mitarbeitern in die entsprechende Zelle/Zeile der anderen Datei kopiert werden sollen. Du könntest aber auch über eine ganz normale Formel auf andere Dateien zugreifen, falls dir das hilft. Also z.B. folgende Formel in der Datei "Maschinenbelegung" in Zelle O5 hat denselben Effekt wie der obige Code.
Code:
=SUMME([Maschinennutzung.xlsx]Tabelle1!$U$9:$Y$9)
__________________
Der Klügere gibt nach... deshalb regieren die Dummen die Welt
eitch100 ist offline   Mit Zitat antworten
Antwort

Themen-Optionen
Ansicht

Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:31 Uhr.


Sitemap

().