Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1292to1296
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
Inhaltsverzeichnis

@Rudi Maintaire

@Rudi Maintaire
24.01.2013 10:54:42
Herbert
Hallo Rudi,
Du hast mir am18.01.12 folgende super Funktion gebaut:
F unction maxBlock(rng As Range, iRang As Integer) As Integer '* Von Rudi Maintaire am 18.1.12
Dim rngC As Range, iCounter As Integer
Dim arrTmp(), n As Integer
ReDim arrTmp(rng.Columns.Count)
For Each rngC In rng.Rows(1).Cells
If rngC = "" Then
iCounter = iCounter + 1
Else
arrTmp(n) = iCounter
iCounter = 0
n = n + 1
End If
Next
arrTmp(n) = iCounter
maxBlock = WorksheetFunction.Large(arrTmp, iRang)
End Function
Sie war für mein Problem mit den Leerzellenblöcken. Sie arbeitet wunderbar, in einer Zeile. Nun bräuchte ich das Ganze aber auch Zeilenübergreifend (s. meine Datei https://www.herber.de/bbs/user/83510.xls / und mein Posting hier https://www.herber.de/forum/messages/1295416.html). Hast Du mir da evtl. eine Lösung?
Das Ganze dient der Erfassung von Ruhezeiten (=Leerzellen) in JEDEM Zeitraum von 24 Std. Die dargestellten Zellen entsprechen immer einer halben Stunde. Die Zeilen sind die Tage, die Spalten die Stunden, resp. halbe Stunden. Deshalb muss ich den zu berechnenden Bereich immer um eine Zelle nach rechts verschieben.
Hoffentlich habe ich das verständlich formuliert. Wenn nicht, bitte nachfragen.
Vielen Dank schon mal im Voraus.
Servus

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

Betreff
Datum
Anwender
Anzeige
AW: @Rudi Maintaire
24.01.2013 12:25:46
Rudi
Hallo Herbert,
teste mal:
Function maxBlock(sRng As String, iRang As Integer) As Integer
'* Von Rudi Maintaire am 24.1.13
Dim rngC As Range, iCounter As Integer, iArr As Integer
Dim arrTmp(), n As Integer, rng As Range, arrRng
arrRng = Split(sRng, ",")
ReDim arrTmp(0)
For iArr = 0 To UBound(arrRng)
Set rng = Range(Trim(arrRng(iArr)))
ReDim Preserve arrTmp(UBound(arrTmp) + rng.Columns.Count)
For Each rngC In rng.Rows(1).Cells
If rngC = "" Then
iCounter = iCounter + 1
Else
arrTmp(n) = iCounter
iCounter = 0
n = n + 1
End If
Next rngC
Next iArr
arrTmp(n) = iCounter
maxBlock = WorksheetFunction.Large(arrTmp, iRang)
End Function
Für dein Bsp.: =maxblock("AS6:BB6,G7:AR7";1)
Gruß
Rudi

Anzeige
AW: @Rudi Maintaire
24.01.2013 16:55:15
Herbert
Hallo Rudi,
vielen Dank für Deine Funktion! Sie funktioniert genau so gut wie Deine erste! Du bist Spitze!
Bis zum nächsten Mal!
Servus

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige