Thema Datum  Von Nutzer Rating
Antwort
01.07.2021 13:31:25 Lukas Schwanz
NotSolved
01.07.2021 19:51:06 Gast78921
NotSolved
01.07.2021 20:08:22 Gast34498
NotSolved
02.07.2021 08:53:31 Gast91952
NotSolved
02.07.2021 13:37:17 Gast60790
NotSolved
02.07.2021 14:21:53 Lukas Schwanz
NotSolved
02.07.2021 15:21:02 Gast69038
NotSolved
03.07.2021 12:23:36 Lukas Schwanz
NotSolved
03.07.2021 22:13:43 Gast93186
NotSolved
06.07.2021 09:40:14 Lukas Schwanz
NotSolved
07.07.2021 09:32:51 Gast9064
NotSolved
07.07.2021 09:44:08 Gast31074
NotSolved
07.07.2021 09:44:59 Gast91455
NotSolved
Blau Blau Makro nur bis bestimmter Wert in Zelle ausführen
07.07.2021 21:22:17 Gast74934
NotSolved
01.07.2021 23:17:46 Gast65029
NotSolved

Ansicht des Beitrags:
Von:
Gast74934
Datum:
07.07.2021 21:22:17
Views:
697
Rating: Antwort:
  Ja
Thema:
Makro nur bis bestimmter Wert in Zelle ausführen
Option Explicit
 
Sub Test()
   
  Dim sh        As Excel.Worksheet
  Dim rngFails  As Excel.Range
  Dim rngMatch  As Excel.Range
  Dim rngStart  As Excel.Range
  Dim rngTarget As Excel.Range
   
  With ThisWorkbook.Worksheets("Zusammenfassung")
    Set rngStart = .Range("A5")
    Set rngTarget = rngStart
    Call .UsedRange.Clear
  End With
  
  For Each sh In ThisWorkbook.Worksheets
     
    Set rngMatch = sh.Columns("A").Find("BOARDRESULT", , xlValues, xlWhole, xlByColumns, xlNext, False)
    Set rngFails = Nothing
     
    If Not rngMatch Is Nothing Then
      If rngMatch.Offset(0, 1).Value = "FAIL" Then
        Set rngFails = sh.Range("A4", rngMatch.Offset(-2))
      End If
    End If
     
    If Not rngFails Is Nothing Then
      rngTarget.Font.Bold = True
      rngTarget.Value = sh.Name
      Call rngFails.EntireRow.Copy(Destination:=rngTarget.Offset(1))
      Set rngTarget = rngTarget.Offset(1 + rngFails.Rows.Count)
    End If
     
  Next
  
  Dim dic As Object
  Set dic = CreateObject("Scripting.Dictionary")
  
  With rngTarget.Worksheet.Range(rngStart, rngTarget.Offset(-1))
    For Each rngMatch In .Offset(0, 2).Cells
      If rngMatch.Value <> "" Then
        dic(rngMatch.Value) = dic(rngMatch.Value) + 1
      End If
    Next
  End With
  
  With rngTarget.Offset(1, 2)
    'Beschriftungen setzen
    .Offset(0, 1).Value = "Anzahl"
    .Offset(0, 2).Value = "relative Häufigkeit"
    .Offset(1, -1).Value = "Fehler (nur einmal):"
    .Offset(dic.Count + 1, 0).Value = "Summe"
    'Werte setzen/berechnen
    If dic.Count > 0 Then
      'Spalte mit SN
      With .Offset(1, 0).Resize(dic.Count, 1)
        .Value = WorksheetFunction.Transpose(dic.Keys)
      End With
      'Spalte: Anzahl
      With .Offset(1, 1).Resize(dic.Count, 1)
        .Value = WorksheetFunction.Transpose(dic.Items)
      End With
      'Spalte: rel. Häufigk.
      With .Offset(1, 2).Resize(dic.Count, 1)
        .NumberFormat = "0.00%"
        .Formula = "=RC[-1]/" & rngTarget.Offset(dic.Count + 2, 3).Address(ReferenceStyle:=xlR1C1)
      End With
      'Zeile: Summe
      With .Offset(dic.Count + 1, 1).Resize(1, 2)
        .Cells(2).NumberFormat = "0.00%"
        .Formula = "=SUM(R[-" & dic.Count & "]C:R[-1]C)"
      End With
      With .Resize(dic.Count + 1, 3)
        Call .Sort(.Cells(1, 3), xlAscending, Header:=xlYes)
      End With
    End If
  End With
  
  rngTarget.Worksheet.UsedRange.Columns.AutoFit
  
End Sub

Änderungen zu hier sind markiert.

 

Grüße


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
01.07.2021 13:31:25 Lukas Schwanz
NotSolved
01.07.2021 19:51:06 Gast78921
NotSolved
01.07.2021 20:08:22 Gast34498
NotSolved
02.07.2021 08:53:31 Gast91952
NotSolved
02.07.2021 13:37:17 Gast60790
NotSolved
02.07.2021 14:21:53 Lukas Schwanz
NotSolved
02.07.2021 15:21:02 Gast69038
NotSolved
03.07.2021 12:23:36 Lukas Schwanz
NotSolved
03.07.2021 22:13:43 Gast93186
NotSolved
06.07.2021 09:40:14 Lukas Schwanz
NotSolved
07.07.2021 09:32:51 Gast9064
NotSolved
07.07.2021 09:44:08 Gast31074
NotSolved
07.07.2021 09:44:59 Gast91455
NotSolved
Blau Blau Makro nur bis bestimmter Wert in Zelle ausführen
07.07.2021 21:22:17 Gast74934
NotSolved
01.07.2021 23:17:46 Gast65029
NotSolved