Tabellenauswertung nach mehreren Zellen

  • #1
B

Balu

Bekanntes Mitglied
Themenersteller
Dabei seit
01.02.2003
Beiträge
383
Reaktionspunkte
0
Ort
Die Weiten von Mittelfranken
Hallo,
mein Chef hat mich eben nach einer Excel-Formel für eine Abfrage gefragt und ich musste dicke Backen machen:

In einer Tabelle sind Erfassungsgeräte aufgelistet. Die Geräte müssen zu unterschiedlichen Zeiten zur jährlichen Wartung. Das jeweilige Datum steht in einer Spalte.
Als Ergebnis steht in einer Zelle dann, dass als nächstes das Gerät Nummer ... am (andere Zelle) ... zur Wartung fällig ist.

Nun sind aber hin+wieder 2 oder mehrere Geräte am gleichen Datum zur Wartung fällig.
---> Es sollen dann in o.g. Zelle *alle* Gerätenummern, die als nächstes fällig sind (Datum) angegeben werden.

Er hat's mit der Formel DBAUSZUG versucht, allerdings kommt dann die Fehlermeldung ZAHL!.

Irgendwelche Tipps?

Merci
 
  • #2
Mit Makro oder ohne ?  ::)

Gruß Matjes  :)
 
  • #3
              :-\
Matjes schrieb:
Mit Makro oder ohne ?



Wir wollten es als Formel schreiben, aber wenn's ein Makro gibt, dann auch das.
 
  • #4
Hallo Balu,

zur Funktion bräuchte ich noch ein paar Erläuterungen.
Als Ergebnis steht in einer Zelle dann, dass als nächstes das Gerät Nummer ... am (andere Zelle) ... zur Wartung fällig ist.
Ausgabe erfolgt also in 2 Zellen:
-Zelle 1 hat welchen Offset zu Zelle 2 ?
-ausgegeben wird das nächste fällige Datum in Zelle 2
-ausgegeben werden die Gerätenummern in Zelle 1 zu diesem Datum
-was ist mit Datumsangeben, die verkehrt sind oder leer
   sollen die als erste berücksichtigt werden ?
- steht in der Liste unterhalb der Spalten mit Datum/Gerätenummer noch etwas anderes oder kann dort von unten nach oben nach dem letzten Eintrag gesucht werden ?

Gruß Matjes :)
 
  • #5
Der Aufbau schaut so aus, dass in Spalte 1 die lfd. Nummer steht, Spalte 2 die Gerätebezeichnung, Spalte 3 das Datum.
Es gibt keine leeren bzw. falschen Zellen.

Unter der Liste stand bisher der Satz (damit des Ganze a Gsicht hat...), sinngemäß ...am [Datum] erfolgt Inspektion für Gerät/e [...].   wobei [die eckigen Klammern] jeweils für eigene Zellen stehen.
 
  • #6
Hallo Balu,

folgende Function muß in einem Modul in der betreffenden Datei stehen:
Code:
Option Explicit

Function NaechstesZuWartendesGeraet( _
                    GNrsAnzeigen As Boolean, _
                    Bereich_GNr As Range, _
                    Bereich_Datum As Range) As String


  Dim ws As Worksheet
  Dim lRowGNr As Long, lColGNr As Long, lRowsGNr As Long
  Dim lColDat As Long
  Dim sAnzGNrs As String, dDate As Date, dAnzDate As Date
  Dim x As Long
  
  On Error GoTo AUFRAEUMEN
  
 ->letzte Zeile mit Geraetenr feststellen
  NaechstesZuWartendesGeraet = FEHLER #1 RANGE GNR
  lRowGNr = Bereich_GNr.Row
  lColGNr = Bereich_GNr.Column
  lRowsGNr = Bereich_GNr.Row + Bereich_GNr.Rows.Count - 1
  Set ws = Bereich_GNr.Parent
  
 ->Spalte Datum
  NaechstesZuWartendesGeraet = FEHLER #2 RANGE DATUM
  lColDat = Bereich_Datum.Column
  
 ->kleinstes Datum suchen
  NaechstesZuWartendesGeraet = FEHLER #3 DATUM
  sAnzGNrs = 
  dAnzDate = #1/1/2039#
  For x = lRowGNr To lRowsGNr
    dDate = ws.Cells(x, lColDat).Value
    If dDate = dAnzDate Then
      sAnzGNrs = sAnzGNrs & ,  & ws.Cells(x, lColGNr).Value
      dAnzDate = dDate
    ElseIf dDate < dAnzDate Then
      sAnzGNrs = ws.Cells(x, lColGNr).Value
      dAnzDate = dDate
    End If
  Next
  
 ->Ausgabe
  If Not GNrsAnzeigen Then
   ->Datum ausgeben
    If sAnzGNrs =  Then
      NaechstesZuWartendesGeraet = #keine Geräte
    Else
      NaechstesZuWartendesGeraet = CStr(dAnzDate)
    End If
  Else
   ->Geräte ausgeben
    If sAnzGNrs =  Then sAnzGNrs = #keine Geräte
    NaechstesZuWartendesGeraet = sAnzGNrs
  End If
  
AUFRAEUMEN:
  Err.Clear: On Error GoTo 0
  Set ws = Nothing
End Function

Beispiel für den Einsatz:
a) GeräteNr stehen in B11:B26
b) das jeweilige Wartungsdatum in C11:C26

Dann sind die Formeln für

- das Datum
Code:
=NaechstesZuWartendesGeraet(0;B11:B26;C11:C26)
  0 - keine GeräteNr anzeigen
  B11:B26 -  Bereich GeräteNr (ohne Überschrift)
  C11:C26 -  Bereich WDatum (ohne Überschrift)

- GeräteNr/n
Code:
=NaechstesZuWartendesGeraet(1;B11:B26;C11:C26)
  1 - GeräteNr anzeigen
  B11:B26 -  Bereich GeräteNr (ohne Überschrift)
  C11:C26 -  Bereich WDatum (ohne Überschrift)

Gruß Matjes :)
 
  • #7
Super,
das hat prima geklappt.   mml mml mml

Herzlichen Dank.
 
Thema:

Tabellenauswertung nach mehreren Zellen

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.838
Beiträge
707.961
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben