У меня есть электронная таблица Numbers, в которой есть данные за годы. Я хотел бы вызвать определенные строки в электронной таблице и скопировать только эти строки на новый лист в том же файле, где я хотел бы собрать данные. Все строки, которые я хочу вызвать, содержат два определенных слова в одном столбце.
Итак, в идеале мне нужна функция, с помощью которой я могу сопоставить поиск «john doe» на листе 1-таблица 1-столбец 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
но должно быть проще преобразовать в текст, запустить скрипт в обычном режиме и, при необходимости, преобразовать обратно в дату.
крс013
Джош