Obviamente, esta es una pregunta antigua pero apareció para mí y es algo que ocasionalmente he querido hacer, así que pensé en publicar una respuesta tardía.
Anticipa que el documento 1 tendrá dos tablas en la hoja 1, y que el tamaño de la tabla 2 puede abarcar los datos copiados. Si la columna clave es de un formato especial (por ejemplo, fecha) entonces no funcionará, ya que las fechas requieren un manejo especial, así que cambia su formato a texto. Y obviamente, no tiene manejo de errores.
tell application "Numbers"
tell table 1 of sheet 1 of document 1
-- debido a la necesidad indecente y desesperada de Numbers de envolver texto
set text wrap of cell range to false
set kc to column "C" -- columna clave
set rp to (cells of kc whose value contains "Septiembre") -- filas coincidentes
set hr to {} -- Obtener encabezados para copiar en la tabla 2
copy value of cells of row 1 to hr
set db to {} -- obtener valores de celda de las filas coincidentes
repeat with rs in rp
copy value of cells of row of rs to end of db
end repeat
-- los datos de cada fila aparecerán así: {3.0, "Dom", "24 de septiembre", "W", "Denver Broncos"}
end tell
-- set db to rest of db -- Si la fila de encabezados contiene coincidencias, entonces descomentar
tell table 2 of sheet 1 of document 1
clear cell range
set rc to count of db -- conteo de filas
set cc to count of item 1 of db -- conteo de columnas
repeat with y4 from 1 to rc -- por cada fila
repeat with x8 from 1 to cc -- por cada columna
set value of cell x8 of row (y4 + 1) to item x8 of item y4 of db
end repeat
end repeat
tell row 1 -- Establecer los encabezados de la tabla para que coincidan con la tabla 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 -- ver arriba
end tell
end tell
Esto no es parte de la respuesta, pero carga datos de muestra en la tabla 1 (mínimo 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 {{"Semana", "Día", "Fecha", "WL", "Rival"}, {2.0, "Dom", "17 de septiembre", "L", "Carolina Panthers"}, {3.0, "Dom", "24 de septiembre", "W", "Denver Broncos"}, {4.0, "Dom", "1 de octubre", "W", "Atlanta Falcons"}, {5.0, "Dom", "8 de octubre", "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 texto -- el formato de fecha requiere un manejo especial
set text wrap of cell range to false
Nota sobre el formato de fecha: No puedes comparar una cadena con el mes de un objeto de fecha. Probablemente podrías crear un método descomponiendo las celdas de fecha: set x to value of cell "C2"
, set y to month of x
, set z to x as text
pero debería ser más fácil convertirlo a texto, ejecutar el script normalmente y si es necesario, convertirlo de regreso a fecha.
0 votos
¿Quieres copiar una fila o filas por número, o hacer algún tipo de búsqueda? Esa segunda oración me confundió.
0 votos
Cualquier fila que tenga la frase "john doe" en la columna G.