Wie kann ich Numbers so einstellen, dass eine Datenzeile automatisch von einem Blatt auf ein anderes Blatt kopiert wird?

Ich habe eine Numbers-Tabelle, die Daten im Wert von Jahren enthält. Ich möchte bestimmte Zeilen in der Tabelle aufrufen und nur diese Zeilen in ein neues Blatt in derselben Datei kopieren, in der die Daten gesammelt werden sollen. Die Zeilen, die ich aufrufen möchte, enthalten alle zwei bestimmte Wörter in derselben Spalte.

Idealerweise hätte ich also gerne eine Funktion, mit der ich eine Suche nach "John Doe" in Blatt 1-Tabelle 1-Spalte G abgleichen, die gesamte Datenzeile auswählen, kopieren und in Blatt 2 einfügen kann.

Welche Funktion oder mehrere Funktionen können verwendet werden, um dies zu erreichen?

Möchten Sie eine Zeile oder Zeilen nach Nummer kopieren oder eine Art Suche durchführen? Der zweite Satz hat mich abgeschreckt.
Jede Zeile, die den Ausdruck "john doe" in Spalte G enthält.

Antworten (2)

Ich weiß nicht, ob es möglich ist, dies mit Funktionen zu tun, aber es könnte sein. Es gibt eine aufgerufene Funktion VLOOKUP, die so aussieht, als würde sie das tun, was Sie wollen, aber ich konnte sie beim Experimentieren nicht richtig zum Laufen bringen - eine Funktion, die in einer Zelle existiert, hat es schwer, mehrere Werte für mehrere Zellen zurückzugeben.

Was meiner Meinung nach funktioniert, wenn auch vielleicht nicht so bequem, wie Sie vielleicht möchten, ist die Filteransicht. Wenn Sie auf der rechten Seite des Fensters die Ansicht „Sortieren und filtern“ und die Registerkarte „Filter“ auswählen, können Sie „einen Filter hinzufügen“, der mit einem Wert in einer bestimmten Spalte übereinstimmt. Wenn Sie diesen Filter mithilfe des Kontrollkästchens in der Ecke des Felds dieses Filters umschalten, werden alle Zeilen ausgeblendet, die diesen Kriterien nicht entsprechen. Anschließend müssen Sie nur noch alle Zellen markieren, kopieren und in ein anderes Blatt einfügen.

Leider werden dadurch keine weiteren Zeilen hinzugefügt, wenn Sie Zeilen im ersten Blatt hinzufügen. Wenn Sie also diese Funktionalität benötigen, wird Ihre Frage dadurch nicht beantwortet. Wenn Sie jedoch nur eine einmalige Kopie benötigen, denke ich, dass dies die einfachste Option ist (und die einzige, die ich kenne, aber ich bin nicht sehr vertraut mit Numbers).

Ich kann SVERWEIS anscheinend nicht dazu bringen, das zu tun, was ich will, aber es ist wirklich nah dran. Aber der Filter ist ein fantastischer Vorschlag, er enthält einfach nicht die von Ihnen erwähnte Automatisierung. Wenn ich keine gute Alternative finde, muss ich das tun.
Es schien, als könnte es funktionieren, aber es kann nicht mehrere Übereinstimmungen verarbeiten. Wenn Sie es herausfinden, posten Sie auf jeden Fall eine eigene Antwort - ich bin gespannt, wie es funktionieren würde.

Offensichtlich ist dies eine alte Frage, aber sie ist mir aufgetaucht und es ist etwas, das ich gelegentlich tun wollte, also dachte ich, ich würde eine verspätete Antwort posten.

Es geht davon aus, dass Dokument 1 zwei Tabellen auf Blatt 1 haben wird und dass die Größe von Tabelle 2 die kopierten Daten umfassen kann. Wenn die Schlüsselspalte ein spezielles Format hat (z. B. Datum), funktioniert sie nicht, da Datumsangaben eine besondere Behandlung erfordern, also ändern Sie ihr Format in Text. Und offensichtlich hat es keine Fehlerbehandlung.

tell application "Numbers"
    tell table 1 of sheet 1 of document 1
        -- because of the indecent and desperate need for Numbers to wrap text
        set text wrap of cell range to false 

        set kc to column "C" -- key column
        set rp to (cells of kc whose value contains "September") -- matching rows
        set hr to {} -- Get headings to copy to table 2
        copy value of cells of row 1 to hr
        set db to {} -- get cell values from matching rows
        repeat with rs in rp
            copy value of cells of row of rs to end of db
        end repeat
        -- each row's data will appear like this: {3.0, "Sun", "September 24", "W", "Denver Broncos"}
    end tell
        -- set db to rest of db -- If heading row contains match then uncomment

    tell table 2 of sheet 1 of document 1
        clear cell range
        set rc to count of db -- row count
        set cc to count of item 1 of db -- column count
        repeat with y4 from 1 to rc -- for every row
            repeat with x8 from 1 to cc -- for every column
                set value of cell x8 of row (y4 + 1) to item x8 of item y4 of db
            end repeat
        end repeat
        tell row 1 -- Set table headings to match table 1
            repeat with j from 1 to count of columns
                set value of cell j to item j of hr
            end repeat
        end tell
        set text wrap of cell range to false -- see above
    end tell
end tell

Dies ist nicht Teil der Antwort, sondern lädt Beispieldaten in Tabelle 1 (min 5x5)

tell application "Numbers"
    tell table 1 of sheet 1 of document 1
        set column count to 5
        set row count to 5
        set ev to {{"Week", "Day", "Date", "WL", "Opponent"}, {2.0, "Sun", "September 17", "L", "Carolina Panthers"}, {3.0, "Sun", "September 24", "W", "Denver Broncos"}, {4.0, "Sun", "October 1", "W", "Atlanta Falcons"}, {5.0, "Sun", "October 8", "L", "Cincinnati Bengals"}}
        set evy to count of ev
        set evx to count of item evy of ev
        repeat with y from 1 to (evy)
            repeat with x from 1 to evx
                set value of cell x of row y to item x of item (y) of ev
            end repeat
        end repeat
    set format of column "C" to text -- date format requires special handling
    set text wrap of cell range to false
    end tell
end tell

Hinweis zum Datumsformat: Sie können einen String nicht mit dem Monat eines Datumsobjekts vergleichen. Sie könnten wahrscheinlich eine Methode herstellen, indem Sie die Datumszellen aufschlüsseln: set x to value of cell "C2", set y to month of x, set z to x as textaber es sollte einfacher sein, sie in Text umzuwandeln, das Skript normal auszuführen und bei Bedarf wieder in das Datum umzuwandeln.