Frage

Der Autofilter sortiert Daten vertikal, aber ich möchte Zeilen horizontal filtern.Nehmen wir an, ich habe die folgende Tabelle:

1 2 2 1 2

B A E F F

B D E F F

C D E F F

Was ich tun kann, ist, einen Autofilter einzustellen und nur die Zeilen zu filtern, die "B" in der ersten Spalte enthalten.Was ich tun möchte, ist, nur die Zeilen zu filtern, die "2" enthalten (in diesem Fall sind die Zeilen in diesem Fall die zweite, dritte und letzte).

Ich habe einige Informationen zu diesem Thema gefunden.Alle Antworten, die ich gefunden habe, enthalten einige Makros, um die Arbeit zu erledigen, aber sie wurden für MS Excel geschrieben und sind nicht mit OpenOffice kompatibel

Zum Beispiel sollten diese Makros die Zeilen filtern, funktionieren aber nicht in OpenOffice Calc:

Option Explicit

Sub horizontal_filter()
'Erik Van Geit
'060910

Dim LC As Integer           'Last Column
Dim R As Long
Dim i As Integer
Dim FilterValue As String

Const FilterColumn = 1      '1 is most logical value but you may change this

R = ActiveCell.Row
LC = Cells(R, Columns.Count).End(xlToLeft).Column

FilterValue = Cells(R, FilterColumn)

Application.ScreenUpdating = False

'to filter starting after FilterColumn
For i = FilterColumn + 1 To LC
'to filter all columns even before the filtercolumn
'For i = 1 To LC
    If i <> FilterColumn Then
    Columns(i).Hidden = Cells(R, i) <> FilterValue
    End If
Next i

Application.ScreenUpdating = True

End Sub

Jede Hilfe wird sehr geschätzt!

War es hilfreich?

Lösung

Sie können nicht, unter der Annahme angemessener Kosten.Es ist viel einfacher, Ihre Daten einfach so zu transformieren, dass Zeilen Spalten erhalten und umgekehrt.Daher würde ich dringend empfehlen, die Daten mit zu transformieren Paste Special zusammen mit dem Transpose Option.Sie könnten dies sogar dynamisch tun, indem Sie das verwenden TRANSPOSE() Funktion.

BEARBEITEN:

Jetzt habe ich es verstanden - du willst spalten ausblenden basierend auf einem bestimmten Wert.Dies ist tatsächlich mit einem Makro möglich, daher war meine erste Antwort falsch - Entschuldigung dafür!Es gibt einige Makros, die das für Sie erledigen.Sie können eine solche Lösung mit einem Autofilter kombinieren.Hier ist ein lösung von king_026 aus dem OpenOffice.org foren (leicht an Tabellenstruktur angepasst - siehe unten):

REM  *****  BASIC  *****
sub hide
   rem ----------------------------------------------------------------------
   rem define variables
   dim document   as object
   dim dispatcher as object
   rem ----------------------------------------------------------------------
   rem get access to the document
   document   = ThisComponent.CurrentController.Frame
   dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

   rem get the current column
   nCol = ThisComponent.CurrentSelection.CellAddress.Column

   rem set the properties for moving right
   dim args2(1) as new com.sun.star.beans.PropertyValue
   args2(0).Name = "By"
   args2(0).Value = 1
   args2(1).Name = "Sel"
   args2(1).Value = false

   rem make thecurrent column counter
   dim cCol as integer
   CCol = 0

   rem goto the first column
   dim args1(0) as new com.sun.star.beans.PropertyValue
   args1(0).Name = "ToPoint"
   args1(0).Value = "$A$2"

   dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

   rem loop until you get back to the selected cell
    Do Until cCol > nCol

    rem hide if the cell value is 1
        if ThisComponent.CurrentSelection.string <> "" and ThisComponent.CurrentSelection.value = 1 then

            rem ----------------------------------------------------------------------
            dispatcher.executeDispatch(document, ".uno:HideColumn", "", 0, Array())

        End if

        rem goto the right nad increment the column counter
        dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args2())
        cCol = cCol + 1

    Loop

End sub

Also, die folgende Tabelle:

calc1

wird nach dem Autofilter auf Spalte 1 so aussehen und nachdem das Makro seine Arbeit erledigt hat:

calc

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top