myGully.com

myGully.com (https://mygully.com/index.php)
-   Windows & Software (https://mygully.com/forumdisplay.php?f=61)
-   -   Excel2007 Tabellenwerte abfragen und zuordnen (https://mygully.com/showthread.php?t=2626162)

sixfinger 19.05.12 00:01

Excel2007 Tabellenwerte abfragen und zuordnen
 
Hallo,

ich habe eine bzw mehrere Tabellen in Excel 2007 erstellt.
Wie folgt aufgebaut:

Erstes Blatt beinhaltet die Zusammenfassung mit dem aktuellen ist Wert.
Die nächsten 12 Blätter liefern die Einzelauflistungen nach Datum und Grundwert sortiert (je ein Blatt = ein Monat).

Nun möchte ich gern in dem ersten Blatt nur das Datum haben, wo ein Wert eingetragen worden ist.

Also wenn ich jetzt beim 1.Jan in Spalte 5 einen Wert eingebe, soll im ersten Blatt das Datum erscheinen mit dem Wert.
Steht nun auch im 4.Jan ein Wert, soll die nächste Zeile genutzt werden und wieder das Datum und der Wert erscheinen.
Da im 2. und 3.Jan keine Werte sind, sollen diese nicht aufgelistet werden.

Ist sowas mit Excel möglich oder müsste ich da eher auf eine richtige Datenbank umsteigen?
Wenn es möglich ist, wie kann ich es umsetzen?

Vielen Dank für die Hilfe :)

Undertaker2011 19.05.12 00:17

Excel ist ein Programm und kein Betriebssystem!

VERSCHOBEN!

eitch100 19.05.12 10:29

Hi...
mit Excel geht fast alles...:T
also ich bin jetzt auch nicht der Super-Profi in Excel, aber der folgende Code funktioniert... es gibt sicherlich auch andere Wege, aber naja...
Ok... folgenden Code in deine Zusammenfassung (muss aber Blatt 1 sein)...
ich bin davon ausgegangen, dass überall in Zeile 1 Überschriften sind (deswegen im Code k=2) und es um die Werte in Spalte 5 (also Spalte E) geht.

Private Sub Worksheet_Activate()
Dim i, k, l
Range("A2:ZZ1000").ClearContents
l = 2
For i = 2 To Worksheets.Count
For k = 2 To Sheets(i).Cells(1000, 5).End(xlUp).Row
If Sheets(i).Cells(k, 5).Value <> "" Then
Cells(l, 1).Value = Sheets(i).Cells(k, 1).Value
Cells(l, 5).Value = Sheets(i).Cells(k, 5).Value
l = l + 1
End If
Next k
Next i
End Sub

Jedesmal wenn du nun Blatt 1 aktivierst, werden alle Werte neu eingelesen...

sixfinger 19.05.12 16:34

Danke für die hilfe, nur wo muss der code denn rein? Bin nich grad so belesen was excel programmierung angeht :-P

eitch100 19.05.12 16:44

Hi...
Entwicklertools... Code anzeigen...

Edit: Beim Speichern musst du dann aber als Dateiendung .xlsm auswählen

sixfinger 20.05.12 09:57

Hi,

also ich hab das nun alles eingegeben und es zerschießt mir das Layout und ich erhalte nur Fehler :(

Eingabe: http://img708.imageshack.us/img708/796/ek2z.th.jpg

Anzeige: http://img821.imageshack.us/img821/5486/ek1gn.th.jpg


Blatt eins normalerweise: http://img849.imageshack.us/img849/4889/43133660.th.jpg

Blatt 2- 13: http://img716.imageshack.us/img716/7014/10936454.th.jpg

Kein Plan ob ich das richtig gemacht habe oder obs einfach nur nich klappt .

Gibt es noch andere Möglichkeiten?

eitch100 20.05.12 10:57

Hi....
naja... ich konnte anhand deiner Beschreibung natürlich nicht genau wissen, was genau alles von wo nach wo übertragen werden soll...

ich werde den Code entsprechend ändern....

ist in Arbeit....

sixfinger 20.05.12 11:22

Cool Danke :D
Gibt es denn irgendwo eine empfehlenswerte Seite die man sich anschauen sollte im Bezug auf VBA?

eitch100 20.05.12 11:35

Hi..
ich habe den neuen Code anhand deiner Bilder gemacht, damit er funktioniert und da ich nicht weiß, wie die anderen Blätter aussehen, musst du in den Monatsblättern jeweils in Spalte Q eine Formel eingeben, die die Werte links von ihr angibt, also z.b.
=Summe(B3:P3)
aber nur nur bis zum Monatsletzten... also ohne den Gesamtbetrag...
in der zeile mit clearcontents musst du das leerzeichen rausnehmen...

Private Sub Worksheet_Activate()
Dim i, k, l
Range("B12: D1000").ClearContents
l = 12
For i = 2 To Worksheets.Count
For k = 3 To Sheets(i).Cells(100, 17).End(xlUp).Row
If Sheets(i).Cells(k, 17).Value > 0 Then
Cells(l, 2).Value = Sheets(i).Cells(k, 1).Value
Cells(l, 4).Value = Sheets(i).Cells(k, 17).Value
l = l + 1
End If
Next k
Next i
End Sub


P.S. Herbers Excel Forum (also zum VBA lernen, kann ich dir keine Seite empfehlen, da ich es mir eigentlich über Jahre anhand des Makro-Rekorders, der VBA Hilfe in Excel und in selbst nicht lösbaren Fällen mit erwähntem Forum beigebracht habe) Leider mache ich selbst zu wenig und verlerne es so langsam...:cry:

sixfinger 20.05.12 14:48

Super es Funktioniert! Danke :)

Musste jetz nur die Formel in Q anpassen, so dass ich da bereits ausgerechnet bekomme was drin ist.
Funst top, auch wenn ich etwas lösche, dann taucht es nichtmehr auf und die Zeile wird mit anderem aufgefüllt :)

eitch100 20.05.12 15:04

Zitat:

Zitat von sixfinger (Beitrag 23532909)
Funst top, auch wenn ich etwas lösche, dann taucht es nichtmehr auf und die Zeile wird mit anderem aufgefüllt :)

jo... das geht mit Änderungen genauso, weil jedesmal wenn du Blatt 1 aktivierst, werden die alten Werte komplett gelöscht und neu eingelesen...

oops, da fällt mir ein, dass Spalte C auch gelöscht wird. ist das schlimm? sonst musst du den Spender auch auf den Monatsblättern eingeben und ein neuer Code würde die Namen mit übernehmen...

Wenn ja, dann füge auf allen Monatsblätten vor Spalte Q eine neue Spalte ein und gib ihr ne Überschrift...dann ersetze den Code in Blatt 1 mit folgendem...(Leerzeichen in clearcontents UND hinter den 8en nicht vergessen)

Private Sub Worksheet_Activate()
Dim i, k, l
Range("B12: D1000").ClearContents
l = 12
For i = 2 To Worksheets.Count
For k = 3 To Sheets(i).Cells(100, 18 ).End(xlUp).Row
If Sheets(i).Cells(k, 18 ).Value > 0 Then
Cells(l, 2).Value = Sheets(i).Cells(k, 1).Value
Cells(l, 3).Value = Sheets(i).Cells(k, 17).Value
Cells(l, 4).Value = Sheets(i).Cells(k, 18 ).Value
l = l + 1
End If
Next k
Next i
End Sub

aber bitte bedenke, dass du jetzt nicht einfach irgendwo Zeilen oder Spalten einfügst, denn dann wird der Code nicht mehr korrekt funktionieren...

Undertaker2011 20.05.12 15:47

Zitat:

Zitat von eitch100 (Beitrag 23529690)
also ich bin jetzt auch nicht der Super-Profi in Excel

Ja ne is klar! Kein Profi? :T

eitch100 20.05.12 16:19

Zitat:

Zitat von Undertaker2011 (Beitrag 23533070)
Ja ne is klar! Kein Profi? :T

Danke... aber wenn ich bedenke, was ich schon mal konnte und was man mit Excel alles anstellen kann, dann stimmt das leider... Der Code da oben ist für wirklich gute VBA Leute nix anderes als 2 Schleifen mit einer If-Anweisung... also sieht für "Nicht-Eingeweihte" verzwickt aus, ist aber nicht mehr als Kindergeburtstag...:T

VBA Profis würden das mit Sicherheit anders programmieren und sich über meinen Programmierstil (wenn man das so nennen darf) amüsiert am Boden wälzen...8)

Edit: Das würden vermutlich halbwegs gute z.B. PHP (kann bzw. eher konnte ich auch mal nen bisschen) oder C++ Insider genauso sehen

sixfinger 20.05.12 19:44

Also da ja so viel Möglich ist mit Excel mal noch eine Frage.

Wenn ich eine Dynamisches Diagramm erstellen will, was muss ich da denn tun?

Der Aufbau ist ähnlich gehalten, nur das es sich hier um nur 6 relevante Spalten handelt welche in Monatlichen Statistiken dargestellt werden und in einem extra Blatt dann zusammengefasst und ausgewertet werden.

Brauch ich hier wieder VBA oder geht das auch ohne?

eitch100 20.05.12 20:06

Zitat:

Zitat von sixfinger (Beitrag 23533733)
Also da ja so viel Möglich ist mit Excel mal noch eine Frage.

Wenn ich eine Dynamisches Diagramm erstellen will, was muss ich da denn tun?

Der Aufbau ist ähnlich gehalten, nur das es sich hier um nur 6 relevante Spalten handelt welche in Monatlichen Statistiken dargestellt werden und in einem extra Blatt dann zusammengefasst und ausgewertet werden.

Brauch ich hier wieder VBA oder geht das auch ohne?

Also allein über Formeln kann man natürlich auch vieles regeln... es ist dann sehr oft praktisch irgendwo Zwischenergebnisse anzulegen, mit denen man dann weiterarbeiten kann. Den VBA Code kann man auch mehr oder weniger dynamisch gestalten; ist aber ziemlich umständlich... (zumindest so wie ich es mache:unibrow:)

Also so der aus der Ferne ist das schwer zu beantworten... da brauche ich mehr Input...:eek:
Für Diagramme (also grafische Auswertung deiner Daten, wenn ich das richtig verstanden habe) gibt es den Diagramm-Assistenten. Damit kenne ich mich aber wenig bis gar nicht aus.

P.S. Hast du dir Post #11 nochmal angesehen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:11 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.