Как настроить Numbers на автоматическое копирование строки данных с одного листа на другой?

У меня есть электронная таблица Numbers, в которой есть данные за годы. Я хотел бы вызвать определенные строки в электронной таблице и скопировать только эти строки на новый лист в том же файле, где я хотел бы собрать данные. Все строки, которые я хочу вызвать, содержат два определенных слова в одном столбце.

Итак, в идеале мне нужна функция, с помощью которой я могу сопоставить поиск «john doe» на листе 1-таблица 1-столбец G, выбрать всю строку данных, скопировать ее и вставить на лист 2.

Какую функцию или несколько функций можно использовать для этого?

Вы хотите скопировать строку или строки по номеру или выполнить какой-то поиск? Вторая фраза сбила меня с толку.
Любая строка, содержащая фразу "john doe" в столбце G.

Ответы (2)

Я не знаю, возможно ли это сделать с помощью функций, но может быть. Существует вызываемая функция VLOOKUP, которая, кажется, будет делать то, что вы хотите, но я не смог заставить ее работать в полной мере, экспериментируя с ней — функция, которая существует в одной ячейке, с трудом возвращает несколько значений для нескольких ячеек.

Что, на мой взгляд, работает, хотя, возможно, и не так удобно, как хотелось бы, так это представление фильтра. В правой части окна, если вы выберете представление с надписью «Сортировка и фильтр» и вкладку «Фильтр», вы можете «Добавить фильтр», который будет соответствовать значению в указанном столбце. Переключение этого фильтра с помощью флажка в углу поля этого фильтра скроет все строки, которые не соответствуют этому критерию, тогда достаточно просто выделить все ячейки, скопировать и вставить их на другой лист.

К сожалению, это не будет продолжать добавлять строки по мере добавления строк на первом листе, поэтому, если вам нужна эта функциональность, это не ответит на ваш вопрос. Однако, если вам нужна только одноразовая копия, я думаю, что это самый простой вариант (и единственный, о котором я знаю, но я не очень хорошо знаком с Numbers).

Кажется, я не могу заставить ВПР делать то, что я хочу, но это очень близко. Но фильтр — фантастическое предложение, он просто не содержит автоматизации, как вы упомянули. Если я не смогу найти хорошую альтернативу, это будет то, что я должен сделать.
Казалось, что это может работать, но не может обрабатывать несколько совпадений. Если вы это поймете, обязательно опубликуйте свой собственный ответ - мне любопытно, как это сработает.

Очевидно, это старый вопрос, но он появился у меня, и я иногда хотел это сделать, поэтому я решил опубликовать запоздалый ответ.

Предполагается, что документ 1 будет иметь две таблицы на листе 1, а размер таблицы 2 может охватывать скопированные данные. Если ключевой столбец имеет специальный формат (например, дата), то он не будет работать, так как даты требуют специальной обработки, поэтому измените его формат на текст. И, очевидно, у него нет обработки ошибок.

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

Это не является частью ответа, но загружает образцы данных в таблицу 1 (мин. 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

Примечание о формате даты. Вы не можете сравнивать строку с месяцем объекта даты. Вероятно, вы могли бы создать метод, разбивая ячейки даты: set x to value of cell "C2", set y to month of x, set z to x as textно должно быть проще преобразовать в текст, запустить скрипт в обычном режиме и, при необходимости, преобразовать обратно в дату.