Teilergebnis

Bild

Betrifft: Teilergebnis
von: Rainer
Geschrieben am: 12.10.2015 18:48:41

Hallo,
Teilergenis wird doch verwendet, wenn ich das Ergebnis nur über die angezeigten Spalten haben möchte.
Kann es sein, dass bei aktivem Blattschutz das nicht funkioniert?
Beispiel:

=WENN(TEILERGEBNIS(103;I87:EN87)>1;"x";"")
Wobei es das nicht sein kann, da das Ausblenden mittels VBA-Code erfolgt und dafür der Blattschutz am Anfang des Codes aufgehoben wird.
Gruß Rainer

Bild

Betrifft: AW: Teilergebnis
von: fcs
Geschrieben am: 12.10.2015 21:27:26
Hallo Rainer,
Die Funktion Teilergebnis bezieht sich auf sichtbare/ nicht ausgeblendete Zeilen, wenn Funktion 101 bis 111 gewählt werden.
Bei den Spalten spielt es keine Rolle ob ein- oder ausgeblendet sind.
Gruß
Franz

Bild

Betrifft: AW: Teilergebnis
von: Rainer
Geschrieben am: 12.10.2015 21:37:47
Hallo Franz,
hatte sowas in Erinnerung und dennoch, in irgendeiner Tabelle hatte ich da schon einmal das selbe Problem.
Gibt es einen Ansatz mit VBA?
Muss letztlich nur wissen, ob Text enthalten ist oder nicht.
Das "x" steuert mir lediglich eine Infozeile, welche dann leider auch bei leeren Zellen eingeblendet wird.
Gruß Rainer

Bild

Betrifft: AW: Teilergebnis
von: Rainer
Geschrieben am: 12.10.2015 21:45:13
Hallo Franz,
der Vollständigkeit halber, das "Ein/Ausblenden" wir so gelöst:

  Set objShp = Me.Shapes(Application.Caller)
  With objShp
    If Tabelle1.Cells(Range(.DrawingObject.LinkedCell).Row + 1, Range(.DrawingObject.LinkedCell) _
.Column + 1) = "x" Then
      Me.Range(.DrawingObject.LinkedCell).Offset(1, 0).EntireRow.Hidden = .DrawingObject.Value < _
> 1
    Else
      Me.Range(.DrawingObject.LinkedCell).Offset(1, 0).EntireRow.Hidden = False
    End If
  End With
  Set objShp = Nothing
Quelle: https://www.herber.de/forum/archiv/1448to1452/t1448336.htm
Gruß Rainer

Bild

Betrifft: AW: Teilergebnis
von: Rainer
Geschrieben am: 12.10.2015 21:57:09
Hallo Franz,
müsste das nicht auch so gehen?


i=0
For s = 18 To iColL
  If Columns(s).EntireColumn.Hidden = False Then
    If cells(s, iCol).value ="" then next
    else
      i= i + 1
    end if
  End If
Next
If i>0 ...

Muss gleich Schluss machen und kann es nicht mehr testen, aber meine doch so ans Ziel zu kommen.
Gruß Rainer

Bild

Betrifft: AW: Teilergebnis
von: fcs
Geschrieben am: 13.10.2015 08:28:54
Hallo Reiner,
ja ungefähr.
Als benutzerdefinierte Definierte Tabellenfunktion umgesetzt, kann es wie folgt aussehen.
Bei Aufruf von einem Makro aus kannst du den Parameter Dummy weglassen.
Gruß
Franz

Public Function fncAnzahl2_Sichtbar_Spa(Bereich As Range, Optional Dummy)
    'wertet Zellen bei ein-/ausgeblendete Spalten aus, _
    Dummy = Funktion, die bei Neuberechnung ausgewertet wird, z.B. JETZT()
    'Formel-Beispiel: =fncAnzahl2_Sichtbar_Spa(Q65:AC65;JETZT())
    Dim lngAnzahl2 As Long
    Dim Zelle As Range
    For Each Zelle In Bereich.Cells
        If Zelle.EntireColumn.Hidden = False Then
            If Not IsEmpty(Zelle) Then
                lngAnzahl2 = lngAnzahl2 + 1
            End If
        End If
    Next
    fncAnzahl2_Sichtbar_Spa = lngAnzahl2
End Function


Bild

Betrifft: AW: Teilergebnis
von: Rainer
Geschrieben am: 13.10.2015 17:08:24
Hallo Franz,
hatte heute morgen noch, bevor ich Deine Nachricht gelesen hatte wie folgt umgesetzt:

  Dim objShp As Object, i As Integer, iRow As Integer, iCol As Integer
  Set objShp = Me.Shapes(Application.Caller)
  
  With objShp
    
  i = 0
      
    'Prüfen ob Inhalte vorhanden
    For iCol = 18 To 144
      If Columns(iCol).EntireColumn.Hidden = False Then
        If ActiveSheet.Cells(Range(.DrawingObject.LinkedCell).Row + 1, iCol).Value > "" Then i = _
 i + 1
      End If
      iCol = iCol + 1 'nur jede zweite Spalte durchgehen
    Next
    'Alt: Zeile einblenden wenn in nachfolgender Zeile in Spalte H = x
    'If ActiveSheet.Cells(Range(.DrawingObject.LinkedCell).Row + 1, Range(.DrawingObject. _
LinkedCell).Column + 1) = "x" Then
    
    'Neu:
    If i = 0 Then Exit Sub
    If i > 0 Then
      Me.Range(.DrawingObject.LinkedCell).Offset(1, 0).EntireRow.Hidden = .DrawingObject.Value < _
> 1
    Else
      Me.Range(.DrawingObject.LinkedCell).Offset(1, 0).EntireRow.Hidden = False
    End If
  End With
  Set objShp = Nothing

Dennoch vielen Dank für Deine Mithilfe
Gruß Rainer

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Teilergebnis"