Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Excel: Preise aus mehreren Tabellen vergleichen ?





Frage

Hallo, ich bekomme demnächst Jahresangebote mit Staffelpreisen für verschiedene Zonen. Der Tabellenaufbau ist immer gleich, Zonen in Spalten, die dazugehörigen Preise in Zeilen. Erster Preiseintrag immer in B10. Bisher hab ich die einzelnen Tabellenblätter zusammen in 1 kopiert und dann mittels Filter ausgewertet. Kennt jemand eine elegantere (schnellere) Methode ? (ich stell mir vor so quasi 5 Tabellen übereinanderzulegen und den besten Preis dann auf 1 anzuzeigen ???) Danke schon im Voraus für Tipps. LG Marisa

Antwort 1 von coros

Hallo Marisa,

arbeite doch mit der Funktion

=MIN()

Mit der Funktion kannst Du, ohne die Daten in ein Tabellenblatt kopieren zu müssen, den kleinsten Wert in einem Bereich zu ermitteln. Bei 5 Tabellenblättern und einem Bereich A1:A10 würde das z.B. wie folgt aussehen

=MIN(Tabelle1!$A$1:$A$10;Tabelle2!$A$1:$A$10;Tabelle3!$A$1:$A$10;Tabelle4!$A$1:$A$10;Tabelle5!$A$1:$A$10)

Eventuell bringt Dich das ja etwas weiter.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 2 von rainberg

Hallo Marisa,

der Ansatz von Oliver ist gut.

Die Formel könntest Du wie folgt optimieren

=MIN(Tabelle1:Tabelle5!A1:A10)

Die in der Formel angesprochenen Tabellen müssen hintereinander im Register liegen.
Es dürfen keine Tabellen dazwischen liegen, die nicht ausgewertet werden sollen.

Gruß
Rainer

Antwort 3 von Saarbauer

Hallo,

da ich es so verstehe, dass Tabelle 1 nur die Zusamenstellung ist müsste dan die Formel so lauten:

=MIN(Tabelle2:Tabelle5!A1:A10)

aber sonst ist es ok

Gruß

Helmut

Antwort 4 von rainberg

Hallo Helmut,

da muss ich widersprechen!

1. Es müssen 5 Tabellen ausgewertet werden, nach Deiner Formel wären es nur 4.

2. Oliver hat im Ansatz zufällig Tabelle1 bis Tabelle5 angegeben.
Das ist ja nur beispielhaft, die Tabellen könnten auch andere Namen haben.
Wichtig ist nur, dass zwischen Starttabelle und Zieltabelle keine Tabelle liegt, die nicht an der Auswertung teilnimmt.

3. In welcher Tabelle die Auswertungsformel steht ist gleichgültig, wichtig ist nur dass sie nicht in einem Bereich steht, der ausgewertet werden soll. Also nicht, wie im Beispiel, im Bereich A1:A10.

Gruß
Rainer

Antwort 5 von MarisaS

Hallo an alle,
danke vielmals für die Tipps, bin leider noch nicht dazugekommen, es zu testen - ich melde mich wieder.
LG
Marisa

Antwort 6 von MarisaS

Hallo an alle,
danke, klappt so weit, ich hab zwar noch nicht genug Angebote um Echt zu testen, aber mal ne kleine Test gebaut, und zwar so:
..............................Zone1....Zone2....Zone3
A10: Minimum.....65,00.....64,00.....63,00
A11: +500 kg.......30,00.....29,00.....28,50
A12: +1000 kg.....22,00.....21,00.....20,80
A13: +2000 kg.....20,00.....19,00.....18,00
und mit =MIN(Tabelle2:Tabelle5!B10) bekomme ich den besten Preis aller Tabellenblätter für das Minimum in Zone1 (Ergebnis im 1.Blatt).

Bitte wie kann ich jetzt noch dazu angezeigt bekommen, aus welchem Tabellenblatt der Bestpreis kommt ? (kann ich die Schrift in den Blättern bunt einfärben, und dann im Ergebnis die Farbe mit übernehmen ?), bzw. habt ihr bessere Ideen ?

Danke + LG
Marisa

Antwort 7 von rainberg

Hallo Marisa,

wenn Du auch das Tabellenblatt anzeigen willst, funktioniert meine Formel natürlich nicht.

Um eine entsprechende Formel aufbauen zu können, müsstest Du allerdings ein Beispieldatei hochladen, ansonsten kann ich Dir leider nicht helfen.

Gruß
Rainer

Antwort 8 von MarisaS

Hallo Rainer,
hoffe du bekommst die Testdatei hier
LG
Marisa

Antwort 9 von coros

Hallo Marisa,

das könnte man z.B. mit nachfolgendem Makro erledigen, dass eine Bildschirmmeldung ausgibt, in welcherm Blatt der Minwert ermittelt wurde. Anstelle der Meldung kann der Wert auch in einer Zelle ausgegeben werden.

Kopiere das Makro in ein StandardModul und starte es z.B. über eine Befehlsschaltfläche
Teste das Makro aber bitte in einer Testdatei und nicht gleich in Deiner Originaldatei.

Option Explicit

Sub Minwertermittlung()
Dim iSheets As Integer
Dim varMinWert As Variant
Dim varMinWertGesichert As Variant
Dim strBlattName As String

For iSheets = 2 To Sheets.Count
    varMinWert = Application.WorksheetFunction.Min(Sheets(iSheets).Range("B10:B" _
                    & Sheets(iSheets).Range("A65536").End(xlUp).Row))
    If iSheets = 2 Then
        varMinWertGesichert = varMinWert
        strBlattName = Sheets(iSheets).Name
    End If
    If varMinWert < varMinWertGesichert Then
        varMinWertGesichert = varMinWert
        strBlattName = Sheets(iSheets).Name
    End If
Next
'Anstelle der Messagebox könnte hier eine Zellangabe stehen, in der man den Wert ausgeben kann, _
 z.B. für Tabellenblatt 1 Zelle A1 so:
'Sheets(1).Range("A1") = "Der Minwert " & varMinWertGesichert & " befindet sich in Tabellenblatt " & strBlattName
MsgBox "Der Minwert " & varMinWertGesichert & " befindet sich in Tabellenblatt " & strBlattName
End Sub


Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.

Bei Fragen melde Dich.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 10 von rainberg

Hallo Marisa,

bei der Auswertung mit einer komplexen Formel würde die Brühe teuerer als das Fleisch, da noch einige Hilfsbereiche nötig wären.

Habe deshalb eine erweiterbare Alternative erstellt.

Die Ausgangswerte werden per Formel in die Auswertungstabelle geholt und die Minima per Bedingter Formatierung gekennzeichnet.

Teste mal selbst, ob Dir das genügt.
Wenn nicht, dann kommt wohl nur noch ein Makro infrage.

http://rapidshare.com/files/157674797/re_Preisvergleich.xls.html

Gruß
Rainer

Antwort 11 von MarisaS

Hallo Ihr 2,
danke vielmals für die Hilfe. Ich muss gestehen, dass ich das mit dem Makro noch nicht probiert hab, weil ich noch nie mit Makros gearbeitet habe und das irgendwie ziemlich kompliziert ausschaut.

Die Lösung von Rainer hat den Nagel auf den Kopf getroffen - ich bin ganz hingerissen - genau von soetwas hab ich geträumt !!!

@Rainer:
wenn du ein bisschen Zeit hast, könntest du mir noch so ein Blatt bauen, wo die 3 untereinander stehen (denn in Echt hab ich viele Zonen, nicht nur 3, dann wirds undruckbar), oder mir die Formel erklären, so dass ich es selbst machen kann.

Danke ganz herzlich
LG
Marisa

Antwort 12 von Saarbauer

Hallo,

das Makro von @ coros etwas abgewandelt unter Berücksichtigung der Tabelle von @ rainberg

Sub Minimumermittlung()
For i = 10 To 19
    For j = 2 To 4
        For iSheets = 2 To Sheets.Count
            If iSheets = 2 Then
                MinWert = Sheets(iSheets).Cells(i, j).Value
                Farbe = Sheets(iSheets).Cells(i, j).Font.Color
            Else
                If MinWert > Sheets(iSheets).Cells(i, j).Value Then
                    MinWert = Sheets(iSheets).Cells(i, j).Value
                    Farbe = Sheets(iSheets).Cells(i, j).Font.Color
                End If
            End If
        Next
        Sheets(1).Cells(i, j).Value = MinWert
        Sheets(1).Cells(i, j).Font.Color = Farbe
    Next
Next
End Sub


du erhlst dann deine Testdatei aus AW 8 nur auf dem ersten Blatt die Werte farbig angelegt, wie auf dem jeweiligem Tabellenblatt

Gruß

Helmut

Antwort 13 von rainberg

Hallo Marisa,

hier die gewünschte Änderung

http://rapidshare.com/files/157710221/re2_Preisvergleich.xls.html

Gruß
Rainer

Antwort 14 von rainberg

@ Helmut

mal ein Hinweis:

Du solltest bei Deinem Makros immer OptionExplicit verwenden und die Variablen ordnungsgemäß deklarieren.

Gruß
Rainer

Antwort 15 von MarisaS

D A N K E V I E L M A L S !!!
(morgen gehts an die Echt - diesmal freu ich mich schon drauf, früher war das immer mühselig).
LG
Marisa