Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
776to780
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
776to780
776to780
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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

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

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige