En un rango de celdas, ¿hay alguna manera de contar las que tienen cierto color de fondo?
Respuesta
¿Demasiados anuncios?Aquí hay un ejemplo en AppleScript que contará el número de celdas en un rango que tiene el color de fondo rojo.
Nota que el documento de Numbers estaba abierto en el fondo de Script Editor.
Cuando se ejecutó el script, mostró el siguiente cuadro de diálogo.
-- # Variables definidas por el usuario
set theRange to "A1:L10"
-- # El color de fondo de las celdas del rango. Expresado como una lista de valores RGB (Rojo, Verde, Azul)
-- # entre 0 y 65535. Por ejemplo, el color rojo es: {65535, 0, 0}
set R to 65535
set G to 0
set B to 0
-- # Otras variables
set thisColor to ""
set theRGBValue to {}
set theCount to 0
tell application "Numbers"
tell document 1
tell sheet 1
tell table 1
tell range theRange
repeat with i from 1 to (cell count)
set thisColor to background color of cell i as string
if thisColor is not "" then
set theRGBValue to (background color of cell i)
if item 1 of theRGBValue is equal to R and item 2 of theRGBValue is equal to G and item 3 of theRGBValue is equal to B then
set theCount to theCount + 1
end if
end if
end repeat
end tell
end tell
end tell
end tell
end tell
display dialog "El conteo de celdas con el color {" & R & ", " & G & ", " & B & "} es: " & theCount buttons {"OK"} default button 1
Nota: Esto se probó en una versión antigua de Numbers (versión 09 2.3) y puede necesitar ajustes para versiones más recientes.
Si no sabes cuál es el valor RGB de una determinada celda
para insertarlo en el script anterior, entonces para obtener el valor RGB del color de fondo
de una determinada celda
, por ejemplo, F5
, utiliza:
tell application "Numbers"
get background color of cell 1 of range "F5:F5" of table 1 of sheet 1 of document 1
Solo como información, el ejemplo principal mencionado anteriormente podría condensarse en lo siguiente para el tell application "Numbers"
bloque:
tell application "Numbers"
tell range theRange of table 1 of sheet 1 of document 1
repeat with i from 1 to (cell count)
if (background color of cell i as string) is not "" then
set theRGBValue to (background color of cell i)
if item 1 of theRGBValue is equal to R and item 2 of theRGBValue is equal to G and item 3 of theRGBValue is equal to B then
set theCount to theCount + 1
end if
end if
end repeat
end tell