Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Exelfunktion in VBA?

Forumthread: Exelfunktion in VBA?

Exelfunktion in VBA?
28.06.2006 12:41:48
Stephen
Hallo
Ich hatte letzte Woche schon einmal gefragt, hatte wohl aber zu wenig Infos gepostet.
Mit folgender Funktion durchsuche ich das Tabellenblatt '05.2006' nach dem Datumsmässig letzten Eintrag.
=INDEX('05.2006'!C1:C100;MAX(WENN('05.2006'!A1:A100=B4;ZEILE('05.2006'!C1:C100))))
Die Tabellenblätter tragen die Bezeichnung: 01.2006,02.2006....bis aktuelles Datum.
In Spalte A steht der Name, in C das Datum.
Wenn der Kunde zb. in 05.2006 nichts bestellt hat, soll in 04.2006 gesucht werden, dann in 03.2006... usw, bis das letzte Bestelldatum gefunden wurde.
Ich würde das gern in VBA machen, habe aber keine Ahnung wie ich dabei vorgehen soll!
Bin für jede Hilfe dankbar!!
Stephen
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Exelfunktion in VBA?
28.06.2006 14:14:19
bst
Hi,
nimm mal sowas als Ansatz.
cu, Bernd
--
Option Explicit

Const myTitle As String = "Suchen"

Sub Suche()
    Dim strSheetName As String ' der Tabellename
    Dim strName As String ' der zu suchende Name
    Dim dDate As Date ' das höchste Datum
    Dim intIndex As Integer ' Index über Tabellenblätter ab dem aktuellen Blatt rückwärts
    Dim lngMaxZeile As Long ' Anzahl der Zeilen
    Dim lngZeile As Long ' Zeilenzähler
    Dim bFound As Boolean ' Flag für strName gefunden
    
    strName = Application.InputBox("Name? :", myTitle, "", Type:=2)
    If strName = "" Then Exit Sub
    
    dDate = DateSerial(0, 0, 0)
    For intIndex = Month(Date) To 1 Step -1
        strSheetName = Format(intIndex, "00") & "." & Format(Year(Date), "0000")
        If WorkSheetExists(strSheetName) Then
            With Worksheets(strSheetName)
                lngMaxZeile = IIf(.Cells(.Rows.Count, 1) = "", .Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count)
                For lngZeile = 1 To lngMaxZeile
                    If .Cells(lngZeile, 1).Value = strName Then
                        dDate = Application.WorksheetFunction.Max(dDate, .Cells(lngZeile, 3))
                        bFound = True
                    End If
                Next
                If bFound Then Exit For
            End With
        Else
            MsgBox "Tabelle: " & strSheetName & " existiert nicht", vbExclamation, myTitle
        End If
    Next
    If bFound Then
        MsgBox "Name: " & strName & vbLf & "Date: " & dDate & vbLf & "Tabelle: " & strSheetName, vbInformation, myTitle
    Else
        MsgBox "Name: " & strName & " nicht gefunden.", vbInformation, myTitle
    End If
End Sub

Private Function WorkSheetExists(strName As String) As Boolean
    Dim intIndex As Integer
    WorkSheetExists = True
    For intIndex = 1 To Worksheets.Count
        If Worksheets(intIndex).Name = strName Then Exit Function
    Next
    WorkSheetExists = False
End Function


Anzeige
AW: Exelfunktion in VBA?
28.06.2006 14:17:12
Mac4
Hallo Stephen,
da hast Du die Möglichkeit, die Formel in eine Zelle zu schreiben, oder die Formel in VBA berechnen zu lassen und nur das Ergebnis in die Zelle zu schreiben:

Sub test()
[A1] = Evaluate("=INDEX('05.2006'!C1:C100,MAX(IF('05.2006'!A1:A100=B4,ROW('05.2006'!C1:C100))))")'schreibt das Ergebnis in die Zelle A1
[A2].FormulaArray = "=INDEX('05.2006'!C1:C100,MAX(IF('05.2006'!A1:A100=B4,ROW('05.2006'!C1:C100))))" 'schreibt die Formel in die Zelle A1
End Sub

Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige