Evidenzia valori maggiori di con la macro ONLYOFFICE
Molto spesso, lavorare con i fogli di calcolo potrebbe sembrare noioso e poco gratificante. Ed è allora che le macro sono utili. Questi piccoli script aiutano ad automatizzare le attività di routine e migliorare la nostra produttività.
In questo post del blog parleremo di una piccola macro che mette in evidenza tutti i valori maggiori di o minori di una certa cifra.
Macro di riferimento
Per riferimento, abbiamo utilizzato una macro VBA. Questa macro richiama una casella di input in cui inserisci il valore maggiore di, quindi cerca la selezione sul foglio di calcolo ed evidenzia le celle di destinazione.
Il codice della macro è il seguente:
Sub HighlightGreaterThanValues()
Dim i As Integer
i = InputBox("Enter Greater Than Value", "Enter Value")
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue, _
Operator:=xlGreater, Formula1:=i
Selection.FormatConditions(Selection.FormatConditions.Count).S
tFirstPriority
With Selection.FormatConditions(1)
.Font.Color = RGB(0, 0, 0)
.Interior.Color = RGB(31, 218, 154)
End With
End Sub
Tuttavia, le macro di ONLYOFFICE sono basate su JavaScript, il che significa che sono più versatili, utilizzeremo approcci diversi per affrontare questo compito.
Evidenzia i valori con un solo colore
Sarebbe un’opzione più semplice. Ma d’altra parte, questa macro può evidenziare anche tutti i valori minori di. In questo caso, puoi evidenziare tutti i valori maggiori di con un colore e tutti i valori minori di con un altro.
Quindi iniziamo! Prima dobbiamo ottenere il foglio attivo. Lo facciamo utilizzando il metodo Api.ActiveSheet che restituisce un oggetto che rappresenta un foglio attivo. E poi miriamo alla selezione sul foglio di calcolo:
(function ()
{
var activeSheet = Api.ActiveSheet;
var selection = activeSheet.Selection;
})();
Ora dobbiamo ottenere un valore di ogni cella dalla selezione. Questa volta useremo il metodo ForEach. Esegue una funzione esatta una volta per ogni cella:
(function ()
{
var activeSheet = Api.ActiveSheet;
var selection = activeSheet.Selection;
selection.ForEach(function (range) {
var value = range.GetValue();
});
})();
Quindi aggiungiamo un’istruzione if che verificherà se i valori nella selezione sono maggiori di un certo numero. Nel nostro caso, è 5. Se sono maggiori di 5, cambiamo il colore di riempimento delle celle utilizzando il metodo SetFillColor. Crea un colore di riempimento dal codice RGB:
(function ()
{
var activeSheet = Api.ActiveSheet;
var selection = activeSheet.Selection;
selection.ForEach(function (range) {
var value = range.GetValue();
if (value > 5) {
range.SetFillColor(Api.CreateColorFromRGB(255,0,255));
}
});
Eseguiamo la nostra macro.
In alternativa, puoi modificare il colore del carattere dei valori target. Per farlo, sostituiremo il metodo SetFillColor con SetFontColor:
Per evidenziare i valori minori di, cambiamo il parametro dell’istruzione if. Ora, se il valore di una cella nella selezione è inferiore a 5, il colore di sfondo della cella cambierà.
(function ()
{
var activeSheet = Api.ActiveSheet;
var selection = activeSheet.Selection;
selection.ForEach(function (range) {
var value = range.GetValue();
if (value < 5) {
range.SetFillColor(Api.CreateColorFromRGB(255, 255, 0));
}
});
})();
Evidenzia i valori con più colori
Ora, facciamo un passo avanti e creiamo una macro che evidenzierà le celle target con più colori.
Innanzitutto, abbiamo bisogno di questi colori unici. Usiamo il metodo CreateColorFromRGB per generarli e memorizziamo questi colori nell’array uniqueColors:
var uniqueColors = [Api.CreateColorFromRGB(255, 255, 0),
Api.CreateColorFromRGB(204, 204, 255),
Api.CreateColorFromRGB(0, 255, 0),
Api.CreateColorFromRGB(0, 128, 128),
Api.CreateColorFromRGB(192, 192, 192),
Api.CreateColorFromRGB(255, 204, 0),
Api.CreateColorFromRGB(255, 0, 0),
Api.CreateColorFromRGB(0, 255, 255),
Api.CreateColorFromRGB(255, 0, 255),
Api.CreateColorFromRGB(218, 128, 128),
Api.CreateColorFromRGB(128, 0, 0),
Api.CreateColorFromRGB(128, 0, 128),
Api.CreateColorFromRGB(0, 0, 128),
Api.CreateColorFromRGB(165, 42, 42),
Api.CreateColorFromRGB(220, 20, 60),
Api.CreateColorFromRGB(255, 99, 71),
Api.CreateColorFromRGB(205, 92, 92),
Api.CreateColorFromRGB(240, 128, 128),
Api.CreateColorFromRGB(255, 165, 0),
Api.CreateColorFromRGB(255, 215, 0),
Api.CreateColorFromRGB(184, 134, 11),
Api.CreateColorFromRGB(218, 165, 32),
Api.CreateColorFromRGB(173, 255, 47),
Api.CreateColorFromRGB(0, 100, 0),
Api.CreateColorFromRGB(50, 205, 50),
Api.CreateColorFromRGB(70, 130, 80),
Api.CreateColorFromRGB(75, 0, 130),
Api.CreateColorFromRGB(72, 61, 139),
Api.CreateColorFromRGB(255, 182, 193),
Api.CreateColorFromRGB(188, 143, 143),
Api.CreateColorFromRGB(112, 128, 144),
Api.CreateColorFromRGB(210, 180, 140),
Api.CreateColorFromRGB(105, 105, 105),
Api.CreateColorFromRGB(216, 191, 216),
Api.CreateColorFromRGB(240, 248, 255),
Api.CreateColorFromRGB(102, 205, 170),
Api.CreateColorFromRGB(255, 240, 245)];
Quindi dichiariamo la variabile uniqueColorIndex e la impostiamo su 0. Useremo questa variabile come indice per selezionare colori univoci dall’array. Per farlo, aggiungiamo un’istruzione if che attraverserà l’array e incrementa l’indice:
var uniqueColorIndex = 0;
function getColor() {
if (uniqueColorIndex === uniqueColors.length) {
uniqueColorIndex = 0;
}
return uniqueColors[uniqueColorIndex++];
Quindi, abbiamo bisogno di un’istruzione if che trovi i valori target e applichi il colore univoco alle celle. Il concetto è simile alla macro precedente. Puntiamo sul foglio attivo. Quindi, otteniamo i valori delle celle nella selezione. E aggiungiamo un’istruzione if che cercherà i valori maggiori di o minori di e li evidenzierà con il metodo SetFillColor . Ma questa volta, il colore verrà generato con la funzione getColor:
var activeSheet = Api.ActiveSheet;
var selection = activeSheet.Selection;
selection.ForEach(function (range) {
var value = range.GetValue();
if (value > 5) {
range.SetFillColor(getColor());
}
});
Il codice completo della macro è il seguente:
(function ()
{
var uniqueColors = [Api.CreateColorFromRGB(255, 255, 0),
Api.CreateColorFromRGB(204, 204, 255),
Api.CreateColorFromRGB(0, 255, 0),
Api.CreateColorFromRGB(0, 128, 128),
Api.CreateColorFromRGB(192, 192, 192),
Api.CreateColorFromRGB(255, 204, 0),
Api.CreateColorFromRGB(255, 0, 0),
Api.CreateColorFromRGB(0, 255, 255),
Api.CreateColorFromRGB(255, 0, 255),
Api.CreateColorFromRGB(218, 128, 128),
Api.CreateColorFromRGB(128, 0, 0),
Api.CreateColorFromRGB(128, 0, 128),
Api.CreateColorFromRGB(0, 0, 128),
Api.CreateColorFromRGB(165, 42, 42),
Api.CreateColorFromRGB(220, 20, 60),
Api.CreateColorFromRGB(255, 99, 71),
Api.CreateColorFromRGB(205, 92, 92),
Api.CreateColorFromRGB(240, 128, 128),
Api.CreateColorFromRGB(255, 165, 0),
Api.CreateColorFromRGB(255, 215, 0),
Api.CreateColorFromRGB(184, 134, 11),
Api.CreateColorFromRGB(218, 165, 32),
Api.CreateColorFromRGB(173, 255, 47),
Api.CreateColorFromRGB(0, 100, 0),
Api.CreateColorFromRGB(50, 205, 50),
Api.CreateColorFromRGB(70, 130, 80),
Api.CreateColorFromRGB(75, 0, 130),
Api.CreateColorFromRGB(72, 61, 139),
Api.CreateColorFromRGB(255, 182, 193),
Api.CreateColorFromRGB(188, 143, 143),
Api.CreateColorFromRGB(112, 128, 144),
Api.CreateColorFromRGB(210, 180, 140),
Api.CreateColorFromRGB(105, 105, 105),
Api.CreateColorFromRGB(216, 191, 216),
Api.CreateColorFromRGB(240, 248, 255),
Api.CreateColorFromRGB(102, 205, 170),
Api.CreateColorFromRGB(255, 240, 245)];
var uniqueColorIndex = 0;
function getColor() {
if (uniqueColorIndex === uniqueColors.length) {
uniqueColorIndex = 0;
}
return uniqueColors[uniqueColorIndex++];
}
var activeSheet = Api.ActiveSheet;
var selection = activeSheet.Selection;
selection.ForEach(function (range) {
var value = range.GetValue();
if (value > 5) {
range.SetFillColor(getColor());
}
});
})();
Ora, eseguiamo la nostra macro!
E ancora, in alternativa, puoi utilizzare il metodo SetFontColor:
Questa piccola macro è solo una delle tante possibili implementazioni dei nostri metodi API. Le macro di ONLYOFFICE sono estremamente versatili e ti invitiamo a sperimentare e creare i tuoi script. Sentiti libero di condividere le tue idee o le tue macro con noi. Siamo sempre aperti alla discussione e alla cooperazione. In bocca al lupo per i tuoi sforzi esplorativi!