Tengo una hoja de cálculo de Numbers que contiene años de datos. Me gustaría llamar filas específicas en la hoja de cálculo y copiar solo esas filas en una nueva hoja en el mismo archivo donde me gustaría recopilar los datos. Las filas que quiero que se mencionen contienen dos palabras específicas en la misma columna.
Entonces, idealmente, me gustaría una función que pueda hacer coincidir una búsqueda de "john doe" en la hoja 1-tabla 1-columna G, seleccione toda la fila de datos, cópiela y péguela en la hoja 2.
¿Qué función, o varias funciones, puede usar para lograr esto?
No sé si es posible hacer esto con funciones, pero podría serlo. Hay una función llamada VLOOKUP
que parece que haría lo que usted quiere, pero no pude hacer que funcionara bien mientras experimentaba con ella: una función que existe dentro de una celda tiene dificultades para devolver múltiples valores para múltiples celdas.
Lo que creo que funciona, aunque quizás no sea tan conveniente como podría desear, es la vista de filtro. En el lado derecho de la ventana, si selecciona la vista que dice "Ordenar y filtrar" y la pestaña Filtro, puede "Agregar un filtro" que coincidirá con un valor en una columna específica. Alternar ese filtro usando la casilla de verificación en la esquina del cuadro de ese Filtro ocultará todas las filas que no coincidan con ese criterio, luego es una simple cuestión de resaltar todas las celdas, copiar y pegar en otra hoja.
Desafortunadamente, esto no continuará agregando filas a medida que agrega filas en la primera hoja, por lo que si esa funcionalidad es algo que necesita, esto no responderá su pregunta. Sin embargo, si solo necesita una copia única, creo que esta es la opción más fácil (y la única que conozco, pero no estoy muy familiarizado con Numbers).
Obviamente, esta es una vieja pregunta, pero me apareció y es algo que ocasionalmente quería 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 tiene un formato especial (p. ej., fecha), entonces no funcionará porque las fechas requieren un manejo especial, así que cambie su formato a texto. Y obviamente, no tiene manejo de errores.
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
Esto no es parte de la respuesta, pero carga datos de muestra en la tabla 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
Nota sobre el formato de fecha: no puede comparar una cadena con el mes de un objeto de fecha. Probablemente podría fabricar un método desglosando 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, volver a convertirlo a la fecha.
krs013
jose