Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1508to1512
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

FormulaR1C1 Häufigkeit über gefilterten Bereich

FormulaR1C1 Häufigkeit über gefilterten Bereich
30.08.2016 11:53:06
Katta
Hallo liebes Forum,
nachdem ich mir das Meiste meiner vba-Kentnisse aus diesem Forum aneignen konnte (vielen Dank an alle hierfür :-)), stehe ich nun vor einem Problem, bei welchen ich Hilfe benötige:
Ich habe eine Tabelle mit Messwerten, über welche ich eine Häufigkeitauswertung benötige. Dies habe ich über folgenden Code realisiert:
ThisWorkbook.Worksheets("Häufigkeit").Range("B2").FormulaR1C1 = "=FREQUENCY(Import!RC[" & UF_Dateneingabe.cb_Auswahl.ListIndex & "]:R[" & last_Row_import - 2 & "]C[" & UF_Dateneingabe.cb_Auswahl.ListIndex & "],Häufigkeit!RC[-1]:R[" & last_Row_A - 2 & "]C[-1])"
ThisWorkbook.Worksheets("Häufigkeit").Range("B2").AutoFill Destination:=Range("B2:B" & last_Row_A), Type:=xlFillDefault
ThisWorkbook.Worksheets("Häufigkeit").Range("B2:B" & last_Row_A).FormulaArray = "=FREQUENCY(Import!RC[" & UF_Dateneingabe.cb_Auswahl.ListIndex & "]:R[" & last_Row_import - 2 & "]C[" & UF_Dateneingabe.cb_Auswahl.ListIndex & "],Häufigkeit!RC[-1]:R[" & last_Row_A - 2 & "]C[-1])"
Die Messwerte sind in einer weiteren Spalte mit Datum und Uhrzeit beschriftet. Über diese Spalte steuere ich mittels Autofilter den interessanten Zeitraum.
Leider habe ich keine Idee, wie ich den Code für die Häufigkeit anpassen muß, damit dieser nur auf die gefilterten Daten angewendet wird.
Ich hoffe auf eine Lösung, optimaler Weise eine für mich nachvollziehbare Erklärung :-)
Beste Grüße
Katta

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: FormulaR1C1 Häufigkeit über gefilterten Bereich
01.09.2016 04:57:30
fcs
Hallo Katta,
für die Häufigkeitsberechnung musst du dann die gefilterten Daten in ein separates Blatt kopieren und die Formeln im Makro anpassen.
Lege in der Datei ein weiteres Blatt mit Name "Daten".
Dein Makro musst du dann wie folgt anpassen/ergänzen.
Gibt es einne Grund warum du die Formel erst einfach in B2 einfügst und mit AutoFill nach unten kopierts und dann erst in den gesamten Zellbereich die Matrixformel einfügst?
Eigentlich sind diese 2 Anweisungen überflüssig - ich hab sie mal auskommentiert.
Gruß
Franz
Private Sub Test()
Dim last_Row_A As Long
Dim last_Row_import As Long
Dim last_Row_Data As Long
Dim Spalte As Long, StatusCalc As Long
Dim wksData As Worksheet, rngCopy As Range
Dim wksImport As Worksheet
If UF_Dateneingabe.cb_Auswahl.ListIndex = -1 Then
MsgBox "Es wurde in der Combobox noch keine Spalte gewählt"
Exit Sub
End If
Set wksData = ThisWorkbook.Worksheets("Daten")
Set wksImport = ThisWorkbook.Worksheets("Import")
'Makrobremsen lösen
With Application
.ScreenUpdating = False
StatusCalc = .Calculation
.Calculation = xlCalculationManual
End With
'Alle Daten im Ergebnisblatt löschen
With wksData
.UsedRange.Clear
End With
'ausgewählte Spalte in Combobox
Spalte = UF_Dateneingabe.cb_Auswahl.ListIndex
With wksImport
'prüfen, ob Autofilter im Import-Blatt aktiv ist
If .AutoFilterMode = True Then
'gefilterte Daten kopieren nach Blatt "Daten"
Set rngCopy = .AutoFilter.Range
rngCopy.Copy
wksData.Range("A1").PasteSpecial xlPasteColumnWidths
rngCopy.Copy wksData.Range("A1")
'Letzte Zeile mit Daten im Blatt "Daten"
With wksData
last_Row_Data = .Cells(.Rows.Count, Spalte + 1).End(xlUp).Row '- 2
End With
With ThisWorkbook.Worksheets("Häufigkeit")
last_Row_A = .Cells(.Rows.Count, 1).End(xlUp).Row
'Inhalt in Matrixformelbereich löschen
.Range("B2:B" & last_Row_A).ClearContents
'             .Range("B2").FormulaR1C1 = _
"=FREQUENCY(Daten!R2C[" & Spalte & "]:R" & last_Row_Data & "C[" & Spalte & "]," _
& "RC[-1]:R[" & last_Row_A - 2 & "]C[-1])"
'                .Range("B2").AutoFill Destination:=.Range("B2:B" & last_Row_A), _
Type:=xlFillDefault
.Range("B2:B" & last_Row_A).FormulaArray = _
"=FREQUENCY(Daten!R2C[" & Spalte & "]:R" & last_Row_Data & "C[" & Spalte & "]," _
& "RC[-1]:R[" & last_Row_A - 2 & "]C[-1])"
'Blatt neu berechnen
.Calculate
End With
Else
MsgBox "Autofilter ist in Blatt """ & .Name & """ nicht aktiv!"
End If
End With
'Makrobremsen zurücksetzen
With Application
.ScreenUpdating = True
.Calculation = StatusCalc
End With
End Sub

Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige