WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Software (http://www.wcm.at/forum/forumdisplay.php?f=5)
-   -   Excel: Datenübernahme aus einem anderen Blatt fix abspeichern? (http://www.wcm.at/forum/showthread.php?t=190088)

assign 21.04.2006 12:18

Excel: Datenübernahme aus einem anderen Blatt fix abspeichern?
 
Hallo!

Eine Frage: ich habe 2 Blätter in Excel, die erste Seite ist eine Übersicht aus den Daten des zweiten Blattes (Umsätze pro Tag).

Wie kann es funktionieren dass die Daten des zweiten Blattes immer von mir händisch aktualisiert werden (in den gleichen Feldern), die Daten aber auf dem ersten Blatt immer übernommen und gespeichtert werden?

Die eingegebenen täglichen Daten sollten also auf dem ersten Blatt übernommen werden und müssen fix gespeichert werden - auch wenn die ursprüngliche Datenquelle und somit quasi der Bezug nicht mehr vorhanden ist.

Bitte um Hilfe!

Danke,

assign

Sibirien 21.04.2006 20:41

Du hast also eine Tabelle A und eine Tabelle B und Du möchtest (gewisse) Daten von der TAbelle B in die Tabelle A transferieren.
Habe ich das richtig verstanden?

spooner 21.04.2006 22:20

also wenn ich Dein Vorhaben richtig verstanden habe, dann würde ich ein verknüpfen der Arbeitsblätter vorschlagen so wird es gehen.
das so genannte dreidimensionale arbeiten, beim Durchschreibeverfahren müssen natürlich immer die Blätter markiert sein, Achtung beim kopieren, nur den text verändern nicht aber die Formeln löschen!! - beim kopieren. (Nur, ohne „Bezug“ wie soll das gehen?)

Entweder willst du jemanden verarschen, oder ich habe Deine Anfrage nicht wirklich verstanden.
Kommt schon hin und wieder vor ;-)) besonders bei Excel

grüße spooner
:hammer:

chrisne 21.04.2006 23:04

also ich bin mir auch nicht so ganz sicher ob ich deine frage richtig verstanden habe. aber vergiss die ganzen sachen mit "Bezug". das bekommst leichter mit vba hin.

ich habe dir hier einmal eine kleine testcode gemacht:

Zitat:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim W1, W2 As Worksheet
Dim rngBereich As Range

On Error GoTo Ende

Set W1 = Worksheets("Tabelle1")
Set W2 = Worksheets("Tabelle2")

Set rngBereich = Worksheets("Tabelle2").Range("A1:A1")

If Not Intersect(Target, rngBereich) Is Nothing Then
If WorksheetFunction.CountIf(W1.Range("$A:$A"), Target.Value) = 0 Then
W1.Range("A" & W1.Range("A65536").End(xlUp).Row + 1).Value = Target.Value
End If
End If


Ende:
Set rngBereich = Nothing
End Sub

mache folgendes:
neue excel datei
unten beim register wo tabelle2 steht drückst du die rechte mausstaste und sagst "code anzeigen". dann nimmst mein testcode und fügst diesen ein.

und schon kannst du es testen:
wenn du in tabelle2 im feld A1 einen wert eingibst bzw änderst, dann wird dieser in tabelle1 in spalte A geschrieben. neue werte werden immer unten in tabelle1 angehängt: a1,a2,a3,....

ich hoffe, dass dir das ein wenig hilft oder habe ich dein problem falsch verstanden?

assign 24.04.2006 07:25

Vielen Dank einmal für die Antworten!

Tatsächlich ist das "Problem" nicht leicht zu beschreiben aber es stimmt schon, Tabelle A ist quasi eine Art Übersicht wo auch gerechnet werden soll, Tabelle B soll so eine Art Eingabemaske sein.

Die Umsätze aus einem Fremdprogramm sollten täglich in Tabelle B eingetragen werden (ist nur händisch möglich). Dann werden diese Daten in Tabelle A geschrieben, mit der einen oder anderen Zahl soll auch gerechnet werden (z.B. Durchschnittsumsatz pro Tag pro Outlet).

Selber lösen könnte ich dies in dem ich jeden Tag die Daten in eine neue Spalte bei Tabelle B eintrage, das wird aber mit der Zeit etwas viel und hunderttausend Bezüge gibt es dann auch noch. Außerdem sind die eingegebenen Daten quasi "nutzlos" sobald sie einmal in Tabelle A übernommen worden sind. Schöner wäre es eben wenn ich bzw. meine Kollegen die Daten immer wieder überschreiben könnten.

@spooner
Vom Durchschreibeverfahren habe ich noch nichts gehört. Gibt es da noch etwas anderes als einfach einen Bezug wie =Tabelle2!A1 zu setzen?

@chrisne
Das habe ich ja überhaupt noch nie gesehen! Null Ahnung von vba aber Deine Zeile funktionieren auf alle Fälle genau so wie Du es geschrieben hast. Jetzt muss ich damit noch herumexperimentieren!

Ja ja, so geht es einem, hätt ich bloß damals in der Schule mehr aufgepaßt, im ECDL Kurs hat mir das damals niemand gezeigt :D

Danke inzwischen,

L.G.
assign

chrisne 24.04.2006 09:16

Zitat:

Original geschrieben von assign
@chrisne
Das habe ich ja überhaupt noch nie gesehen! Null Ahnung von vba aber Deine Zeile funktionieren auf alle Fälle genau so wie Du es geschrieben hast. Jetzt muss ich damit noch herumexperimentieren!

ich habe jetzt noch immer nicht ganz verstanden ob mein code jetzt dein problem erfasst hat oder nicht.
wenn ja, dann schick mir die feldnamen (A3,B3,C4,..) und wohin die übertragen werden müssen.
dann ändere ich dir den code.

gruss

Karl99 24.04.2006 10:21

Hi assign!

Hab für mich da was programmiert, was für meine Aufgabenstellung tadellos funktioniert und – so vermute ich – auch Deiner Fragestellung entspricht.

Gut, ich arbeite mit 3 Sheets, in der 1. Maske hab ich meine Eingaben, in der 2. Maske meine Performancedaten (Daten der 12. Maske werden kopiert und hier fortlaufend untereinander aufgelistet und mit dem aktuellen Datum versehen) und in der 3. Maske mein Diagramm (muss ja immer um den neuen Datensatz erweitert werden).

Daraus habe ich ein Makro wie folgt programmiert, bei dem Du aufpassen musst, dass die Zellbezüge und die Bezeichnung der Sheets an Deine Situation anzupassen sind! (Am Ende ha ich nur ein simples Positionieren eingebaut – ist nicht unbedingt notwendig!)

Sub Übertrag()

Sheets("Performancedaten").Select
Dim bereich As Range
Set bereich = ActiveSheet.UsedRange
z = bereich.Rows.Count
Cells(z, 1).Offset(1, 0).Select
ActiveCell.FormulaR1C1 = "=NOW()"
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Cells(z, 2).Offset(1, 0).Select
Sheets("Daten").Select
Range("B5:G5").Select
Selection.Copy
Sheets("Performancedaten").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False

Sheets("Daten").Select
Range("B2:E2").Select
Selection.Copy
Sheets("Performancedaten").Select
Cells(z, 10).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False

Sheets("Daten").Select
Range("B2").Select

Sheets("Performancedaten").Select
Set hr = ActiveSheet.Range(Cells(1, 1), Cells(z + 1, 6))

Sheets("Grafik").Select
ActiveChart.PlotArea.Select
ActiveChart.SetSourceData Source:=hr, PlotBy:=xlColumns

Sheets("Performancedaten").Select
Range("Z1").Select
ActiveCell.FormulaR1C1 = " "
Range("A1").Select

Sheets("Grafik").Select
ActiveChart.ChartArea.Select

Sheets("Daten").Select
Range("G8").Select
ActiveCell.FormulaR1C1 = " "
Range("B2").Select
End Sub

assign 30.04.2006 14:44

Hallo,

danke noch einmal für Eure Hilfe, wegen der Komplexität dieses Falles (zumindest für mich) läuft es darauf hinaus, dass die Daten täglich "händisch" von einer Arbeitsdatei welche die Berechungen anstellt in eine Präsentationsdatei, welche quasi die täglichen Werte (Ergebnisse) sammelt, mittels "Werte einfügen" übertragen werden. Am nächsten Tag werden die Daten der Arbeitsdatei einfach wieder überschrieben.

Ist zwar keine schöne Lösung weil es natürlich auch Zeit benötigt, alles Andere wäre aber etwas zu kompliziert.

Trotzdem habe ich wieder was dazugelernt,

danke,

L.G.
assign

spooner 01.05.2006 08:31

Ich versuche jetzt einmal zusammenzufassen ob ich überhaupt verstanden habe was Du machen willst:

Also Du hast eine Tabelle mit Daten, in welche Du täglich die aktuellen zahlen eingibst.
Es können auch mehrere Tabellenblätter sein, nehmen wir einmal an es handelt sich um Filialen.
In allen ist jedoch der Aufbau als auch der Text gleich.

Es sollte nun auf einer Seite, bzw. einem Blatt die Summe, Mittel wert oder Durchschnittsumsatz pro Tag ersichtlich sein. (zuletzt von allen Filialen) Dieses eine Blatt solltäglich aktualisiert werden und den aktuellen Daten versehen werden.

Wenn ich bis hierher richtig unterwegs bin, ist ja schon einiges bewältigt.

So und nun erstellst Du einmal eine Tabelle in welcher alle Datensätze die immer und überall benötigt werden. (Text und formatierst entsprechend.)
Ist jetzt bspw. Filiale 1 fertig.........

Im Anschluss schreibst Du Dir die Formeln einmal in jedes zu berechnende Feld und ziehst sie auch über die anderen.
Ist dies nun fehlerlos geschehen, kopierst Du diese fertige und richtig erstellte Tabelle
bis jetzt wurden noch keine Daten eingegeben,( aber Du kannst bereits die Teilsummen Formeln erstellen wie zb Summe etc. denn die Felder wo die Beträge oder Daten eingegeben werden sind ja schon vorhanden.)
in ein neues Blatt und fügst sie dort ein, übernimmst jedoch nur die Formeln, dies solange bis du alle Filialen die Du brauchst erstellt hast und jedes Blatt entsprechend umbenannt wurde.

Im ersten Schritt, dürften dies ja ohnehin nur die Summen sein. Vielleicht noch Mittelwert min und max.

Dann beginnst Du mit der Dateneingabe der ersten Filiale.

Zur Probe ob bis dahin schon alles richtig lief, würde ich nun vor Eingabe der Daten der anderen Filialen noch warten.
Jetzt erstellt Du ein Tabellenblatt Filialen gesamt.

([Wenn nun aber tägliche, wöchentliche, monatliche und jahresberichte gebraucht werden, würde ich mit Excel gar nicht mehr weiter machen, sondern mit Access eine Datenbank erstellen und dort mit den Abfragen arbeiten.])



Beim Bearbeiten, Kopieren und einfügen, wählst Du nun was Du übernehmen willst:
Unter Inhalte einfügen Alles, Werte, Formeln, etc.

Folgende Annahme 2 Filialen Wien Zürich
(die verkaufen Computer, ein Artikel davon heißt meinetwegen Pentium )
Werte für verschieden Produkte von Jan bis Dez.
Beim Durchschreibeverfahren müssen natürlich immer auch die erforderlichen und entsprechenden Mappenblätter markiert sein.
Beim kopieren, nur den text verändern nicht aber die Formel löschen
Dann auf die Seite anklicken in welcher der Bezug steht
Tabellen miteinander verknüpfen
Wenn es in einer Reihenfolge sein soll in der Reihenfolge laden
Nun im Blatt Filialen gesamt:sollten die Felder so sein:
= im Feld "B"Jänner "3"Pentium anklicken dann erscheint die Mappe Wien

Um in weiterer folge den eingetragenen wert verwenden zu können, muss dann die unter den Orten Wien London etc in der Formel angeführten Dollar Zeichen entfernen.
Wenn Berechnungen mit Währungsumrechnungen gemacht wurden und die absolut gesetzt wurden.
Wenn eine Änderung in einem Arbeitsblatt oder Mappe muss man die beim öffnen die geforderte Aktualisierungen bestätigen.

Wenn nun unter Filialen gesamt, die gewünschten Werte der ersten Filiale erscheinen, hat es geklappt und Du kannst mit der Eingabe der anderen Filialen beginnen und brauchst diese dann bloß noch wie die erste zu verknüpfen.
Alle nunmehr geänderten Daten in den einzelnen Tabellen, verändern dann auch automatisch die Datensätze in den Filialen gesamt.
Das nennt man auch Durchschreibeverfahren oder dreidimensionales arbeiten.

Dies sind die ungefähren Schritte, es genau und detaillierter zu schreiben, wäre zu umfangreich.
Denn hier fehlt doch noch sehr viel.
Aber wenn Du es schon einmal gelernt hast, dann hilft Dir dies vielleicht wieder etwas weiter.
Dies hier erhebt keinen Anspruch auf Vollständigkeit, aber beschreibt Dir den Weg.
Bitte die unzureichende Groß- und Kleinschreibung zu entschuldigen.
Grüße spooner

chrisne 01.05.2006 11:51

mit vba geht es schneller und einfacher ;)


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:19 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag