Clever-Excel-Forum

Normale Version: Korrekt zählen und analytische Anzeige
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4
Guten Morgen Gast 123

Vielen Dank für Deine Rückmeldung diesbezüglich.

Eine Hilfsspalte ist natürlich jederzeit möglich, da im Excel sowieso die Möglichkeit des "Ausblendens" besteht und somit eine zusätzliche Spalte überhaupt nicht stört.
Das ist durchaus denkbar und von dem her eine pragmatische Lösung...

Was benötigst Du von mir, damit Du den Code schreiben kannst?

Nochmals vielen Dank für Deine Bemühung und einen wunderschönen Start in den Tag.

Beste Grüsse
Baani10
Hallo 

ich habe mir den Thread noch mal genauer durchgelesen und einige Antworten gefunden. Ich hoffe sie reichen für die Lösung.
Anbei eine neue Beispieldatei als xlsm.  (und xlsx für Kollegen die sich meine Lösung ansehen wollen).  Die Makros sind in der Tabelle.

Wenn du wenigstens VBA Grundkenntnisse lernen möchtest öffne die xlsx Datei und versuche das neue Makro in Modul1 zu kopieren.  Wenn man das einmal gemacht hat ist es nicht schwer.  Vorteil: ich kann dann Aenderungen auch als Code Text ins Forum stellen den man auszuwechseln kann.

Neues Makro mit Vba mit Formeln in Spalten S bis U:    S=Mittelwert jedes Patienten, T=Max Wert, U=Min Wert

Das neue Makro ist intelligenter wie vorher, hier gibt es neues Eingabefeld für "Tel 1-3".  Das Feld kann auch Leer sein!  (Optional)
Wenn ein Wert angegeben ist liste ich nur die Daten wie vorher nach Datum und Op-Text auf, wo auch in Spalte G Übereinstimmung mit dem Text "Tel 1-3" sein muss.  d.h. alle drei Kriterien werden beim auflisten berücksichtigt! Ist das Feld leer werte ich nur Op-Text und Datum zum auflisten auf. Dann sind alle drei "Tel" Werte in der Liste.  Hier kann man also frei wahlen nach welchen Kriterien man sich die Daten ansehen will !!

In Zelle P1 sieht man auch "Tel 1-3", diese Zelle dient mir nur zur Auswertung der Formeln!  Hier muss auch "Tel 1-3" stehen.  Habe ich alle drei "Tel" Werte aufgelistet bekomme ich per Formel nur die Daten angezeigt, die mit Zelle P1 übereinstimmen. Die anderen "Tel" Daten werden ignoriert!   

Vorteil der seitlichen Formel:
per VBA kann ich die genaue Adresse des Datensatzes ermitteln, erkenne ob es zwei oder drei Zeilen sind.  So dürfte das "Div/0" Problem gelöst sein.  Die Zelle S1 zieht dann aus allen Patienten Daten den gesamt Mittelwert!! Nur zur Demo habe ich auch Max und Min mal als Formel mit eingefügt, wenn das nicht erwünscht ist streichen wir den Codeteil wieder.  In Zelle Q1 kann man auch mit ZAEHLENWENN sich Werte wie 0,5 ansehen, wie oft sie vorkommen.  Das alles habe ich als Demo entwickelt, jetzt können wir schauen was ihr für die Praxis verwenden könnt, und was wir weglassen.

Für eigene Formeln zu entwickeln steht in Zelle N1 die Zeile des letzen Datensates.  So, das ist jetzt mal meine Arbeit, das was mir an Ideen alles eingefallen ist, schaut euch die Sache bitte ganz in Ruhe an.

Höfliche Schlussbitte:  weil in neuen Makro immer mal ein Fehler stecken kann bitte zuerst Daten aus der Originaldatei ins Beispiel kopieren und dort die ersten Tests durchführen. Da können wir solange probieren und korrigieren bis alles einwandfrei laeuft.  Solche Test bitte nie in der Originaldatei!!

Das einzige was mir zum übertragen in die Originaldatei fehlt ist der Orginal Name der Tabelle mit den Patienten Daten in eurer Originaldatei.  Das kann ich spaeter noch korrigieren.  Erst bringen wir die Sache in der Beispieldatei einwandfrei zum laufen.  Ein Schritt nach dem anderen ...

mfg  Gast 123
Hallo Gast 123

Vielen herzlichen Dank für Deine Unterstützung. Du hast mich auf die Idee bzw. den Geschmack gebracht, mich mehr mit VBA zu beschäftigen. Ich werde nach meine Studium versuchen mehr Zeit darin zu investieren und dazuzulernen. Nun zur Ausgangslage. Leider ist es so, dass sich die Anforderungen an das Excel File geändert haben und wir eine völlig neue Ausgangslage haben. Die Berechnungen etc. funktionieren nun alle und sind auch in das Arbeitsblatt implementiert. Nun geht es wirklich nur noch um die Ausgabe, in einem separaten Arbeitsblatt, welches Du ja bereits mit Makro und VBA hingekriegt hast. Leider hat sich wie bereits gesagt, die ANforderung ein wenig geändert und ich hoffe nun, mit meiner neuen Anweisung bzw. Fragestellung auf eine erneute Lösung zu stossen. Hier kurze Angaben:

- Ich habe in der Originaldatei etwa 10 Tabellenblätter, welche allesamt gleich aufgebaut sind. In den Zeilen 1 bis 36 sind gewisse Berechnungen enthalten, welche für diese Aufgabe nicht mehr relevant sind.
- In der Zeile I6 ist ein Name enthalten, welcher danach als erstes von drei Kriterien festgelegt werden soll (für die Ausgabe).
- In der Zeile 40 bis und mit 47, in der Zeile 49 bis und mit 56......... (über 1000 solche Blöcke) sind die Daten enthalten, welche ausgegeben werden sollten.

Nun zu meiner konkreten Fragestellung:

- Bei dem Arbeitsblatt (Ergebnis) sollten folgende Kriterien eingegeben werden können:

WER? (das wäre dann irgendeiner aus den jeweiligen Arbeitsblättern unter Zelle I6)
OP-DATUM? (das wäre dann das OP-Datum aus den Zeilen im Datenblatt)
TEL? (das wäre dann das TEL unter aus den Zeilen im Datenblatt)

Als Ergebnis sollten jeweils gesamthaft die 8er Blöcke erscheinen, welche alle drei Kriterien erfüllen. FRAGE: Was, wenn ich nur TEL und OP-Datum eingebe, kommen dann alle Ergebnisse aus allen ARbeitsblättern?

Vielen Dank für Deine Unterstützung.

Gruss
Baani10
Hallo Gast 123 und Forum

Entschuldigt bitte, aber ich habe gerade in einem anderen Thread gelesen, dass es besser ist mit einem Arbeitsblatt anstatt mit mehreren Arbeistblättern zu arbeiten.

Demnach habe ich mir Gedanken gemacht und Potenzial in meiner Datei entdeckt. Nun da sämtliche Arbeitsblätter gleich aufgebaut wären, bis auf den Namen, habe ich den Namen einfach in Spalte H eingefügt und somit die anderen Arbeitsblätter gelöscht. Es gibt somit nur noch 1x Arbeitsblatt (Datenblatt) und die Ergebnisvorschau auf einem anderen Arbeitsblatt.

Ich hoffe, dass dies so eher Sinn macht. Die drei Kriterien jedoch bleiben gleich. Im Anhang meine neue Datei dazu.

Vielen Dank.
Baani10
Hallo Baani

anbei die Beispieldatei mit geaendertem Makro zurück  Würde mich freuen wenn die neue Version Problemlos laeuft.
Diesen Teil im Makro bitte beachten:   Const Quelle = "Max Meier"    'hier Name der Quell Tabelle angeben

Hier habe ich als Tabellen Name "Max Meier" angegeben, weil die Tabelle ja auch so benannt ist.  Es stehen natürlich noch andere Patienten drin, wie Mustermann, aber ich muss an die Vorgabe halten!  Sonst funktioniert das Makro nicht. Sollte die Tabellel spaeter in der Originaldatei "Patientendaten" heissen bitte den Namen von Hand aendern. 

Das Makro sollte korrekt funktionieren, bitte mit Patienten Daten in der Beispiel Mappe testen. Den Mittelwert zeige ich zusaetzlich in der Zelle "G1" an. Bitte mal schauen wie die neue Version geworden ist.

mfg  Gast 123
Hallo Gast 123

Wir kommen der Lösung immer näher und ich bin Dir auch sehr dankbar dafür.

Ich hätte noch kleine Anpassungen bzw. Wünsche für den Code:

1. Könntest Du den Mittelwert und sämtliche Berechnungen rauslöschen? Mir ist wirklich nur die Ansicht des 8er Blocks wichtig und es sind keine weiteren Berechnungen nötig (Zelle G1, T1, U1, V1, etc. im Code)
2. Besteht die Möglichkeit, dass wenn ich nur Name ohne Datum und ohne TEL eingebe, dass dann alle erscheinen? Jetzt ist es so, dass ich mindestens Name und Datum eingeben muss. Können die drei Kriterien aber auch alleine ablaufen?

Vielen herzlichen Dank dafür.

P.S. Ich konnte den Code endlich kopieren und selbst ausprobieren, dass bereitet mir extreme Freude :97:
Hallo Baani

hier der neue Code, ich hoffe er funktiniert wie gewünscht.  Viel Erfolg ....

mfg  Gast 123


Code:
Option Explicit      '18.1.2017   Gast 123   Clever Forum

'Const Quelle = "Muster Auswertung"   'hier Name der Quell Tabelle angeben
Const Quelle = "Max Meier"            'hier Name der Quell Tabelle angeben


' Daten auflisten mit Formeln einfügen

Sub OP_Daten_auflisten_Formeln_setzen()
Dim FAdr As String, FEnd As String
Dim TAdr As String, n, i As Long
Dim Wer As String, j As Long
Dim Tel As String, y As Long
Dim Datum As Date, z As Long
Dim sp As Integer, lz As Long
Dim QTab As Worksheet
Set QTab = Worksheets(Quelle)

'LastZell in Spalte E Grund suchen
lz = QTab.Cells(Rows.Count, 6).End(xlUp).Row
z = 6   '1.Zeile zum auflisten in Ergebnis

With Worksheets("Ergebnis Vorschau")   'Ergebnis Tabelle
    'alte Tabelle in Ergebnis löschen
    .UsedRange.Offset(4, 0).Delete shift:=xlUp
     sp = QTab.Cells(40, 26).End(xlToLeft).Column
     Application.ScreenUpdating = False
   
    'Op-Text und Datum laden
    Wer = Trim(.Range("B1"))
    Tel = .Range("B3").Value
    Datum = .Range("B2").Value
         
    'Schleife zum kopieren aller gefundenen Werte
    For j = 40 To lz   'beginnn in Zeile 40
       If QTab.Cells(j, 1) = "Name" Then y = j  'Zelle merken
       
       'OP Text und Datum auswerten
       If Tel <> "" And QTab.Cells(j, 7) = Tel Or Tel = "" Then
       If Datum <> Empty And QTab.Cells(j, 6) = Datum Or Datum = Empty Then
       If Trim(QTab.Cells(j, 8)) = Wer Then
         
          FAdr = Empty:  FEnd = Empty          'Variable löschen
          TAdr = QTab.Cells(z + 2, 7).Address  'Tel1 Adresse (für Formel)
         
          '** Schleife für AbsDiff Formel Adresse zu ermitteln
          For i = 3 To 6
             If Trim(QTab.Cells(y + i, "R")) <> "" Then
                If FAdr = "" Then FAdr = QTab.Cells(z + i, "R").Address
                If FAdr <> "" Then FEnd = QTab.Cells(z + i, "R").Address
             End If
          Next i
         
          'gefundene Zeile bis LastSpalte kopieren
          QTab.Cells(y, 1).Resize(8, sp).Copy .Cells(z, 1)
         
           z = z + 9:  n = n + 1   'Zeile für next Block
       End If
       End If
       End If
    Next j

    'Anzahl der Datensätze notieren
    If n = 0 Then .Range("D1") = " -kein- Datensatz gefunden"
    If n = 1 Then .Range("D1") = "1  Datensatz aufgelistet"
    If n > 1 Then .Range("D1") = n & "  Datensätze aufgelistet"
End With
End Sub
Hallo Gast 123

Vielen Dank für den neuen Code. Hier noch eine Frage:

1) Wenn ich nur die Person eingebe (in Zelle B2) dann erhalte ich eine Auflistung der Blöcke, das ist perfekt. Ist es aber möglich auch nur das Datum (B2) oder nur die Tel (B3) einzugeben, damit auch eine Datenauflistung stattfindet? Momentan ist es so, dass es nur mit B2 einzeln funktioniert. Die anderen zwei kann ich nicht einzeln eingeben und danach die Daten auflisten. Ich benötige dies, da ich in Zukunft auch mal nur nach dem Datum oder nur nach TEL schaue.

Ansonsten funktioniert der Code sehr gut und ich hoffe, dass wir es bald geschafft haben.

Danke für Deine wertvolle Zeit!

Gruss
Baani10
Hallo Baani

auch das geht, und dafür muss nur eine Zeile geaendert werden:  Ein Anreiz für VBA selbst zu lernen:  s. hier:

        If Trim(QTab.Cells(j, 8)) = Wer Or Datum <> Empty Or Tel <> "" Then
        'If Trim(QTab.Cells(j, 8)) = Wer Then   'alte Zeile, bitt korrigieren  s. oben

mfg  Gast 123
Wow, wir haben es tatsächlich geschaft. Das Excel-File macht nun genau das was ich wollte und es funktioniert alles tadellose.

Vielen Dank an alle unterstützer, besonders ein riesengrosses Dankeschön an GAST 123.

Alles Gute und vielleicht bis bald, bei einem neuen "Problem"  Angel 

Beste Grüsse
Baani10
Seiten: 1 2 3 4