On 03/11/2022 12:47, E. Delacroix wrote:
> Il 30/10/22 16:25, Roberto Deboni DMIsr ha scritto:
>
>>
>> Ho provato a seguire la discussione, ma tra scemenze e boria di
>> chi si crede, o le e' veramente, esperto che pero' non aiuta
>> molti gli altri, mi sono stufato e quindi mi scusi in anticipo
>> se la banale soluzione e' gia' stata menzionata.
>
> Preambolo "fuffa", ok.
>> Quando mi trovo ad avere tabelle di cui mi interessa solo
>> l'elaborazione, sistemo la tabella scaricata con un semplice
>> copia ed incolla sotto quella che voglio creare (ci sarebbe
>> anche modo di automatizzare questo passo, ma si va sul
>> complicato e un "copia-e-incolla" non e' la fine del mondo).
>
> Genio incompreso?
Ma che diamine va a pensare ?
Ma cosa c'entra il "genio" ?
Allora, secondo lei, chiunque ha competenze lavorative o
professionali di qualche tipo sarebbe un genio ? Ma e' scemo ?
E poi perche' "incompreso" ? Vuole solo litigare ?
Lei ricorda il classico tipo bastardo che fa scappare i
niubbi dai gruppi nati per aiutarli in informatica.
La battuta sopra voleva solo ricordare che si potrebbe
anche automatizzare il caricamento (cioe' con un "click",
ma che cio' va oltre lo scopo di questa discussione, dove
l'OP ha precisato di non essere un esperto galattico
del programma.
> Se fai il copia/incolla non è detto che ogni voce
> finisca in una colonna propria ...
Non ho idea di cosa stia cianciando e non mi interessa, perche'
l'oggetto di questa discussione e' limitato ad un problema ben
specifico di cui si conosce esattamente il tipo di documento,
oltretutto un semplice documento CSV, il cui rigo tipico e'
fatto cosi':
"01/09/2022";"0,039";"0,04";"0,04";"0,067";"0,04";"0,053";"0,04";"0,039";"0,04";"0,04";"0,04";"0,066";"0,04";"0,039";"0,04";"0,04";"0,04";"0,04";"0,04";"0,04";"0,04";"0,039";"0,04";"0,077";"0,039";"0,044";"0,054";"0,058";"0,039";"0,039";"0,051";"0,067";"0,06";"0,039";"0,061";"0,039";"0,04";"0,038";"0,037";"0,024";"0,046";"0,04";"0,066";"0,031";"0,04";"0,085";"0,024";"0,045";"0,077";"0,107";"0,069";"0,084";"0,047";"0,023";"0,023";"0,033";"0,052";"0,023";"0,023";"0,075";"0,023";"0,07";"0,037";"0,024";"0,023";"0,024";"0,055";"0,025";"0,023";"0,081";"0,044";"0,079";"0,066";"0,023";"0,027";"0,023";"0,07";"0,048";"0,064";"0,059";"0,069";"0,13";"0,04";"0,066";"0,04";"0,074";"0,07";"0,05";"0,039";"0,056";"0,039";"0,04";"0,039";"0,039";"0,04";"0,07";
Per esempo, io il problema l'avevo risolto gia' l'anno scorso
banalmente usando AWK dalla "command line" di Linux. In calce
l'esempio.
Naturalmente, invece di usare il filto AWK, avrei potuto gestire
tutto in C, ma io trovo che il filtro AWK combinato con SED e
altri programmini, come SORT, etc. siano molto piu' comodi che
modificare un codice in C.
Ma non mi pare che l'OP usi Linux e tanto meno che abbia le
competenze per compilare un programmino (anche fosse un semplice
cc genera_q_a_o_awk.c e poi esegui un ./a.out con ridirezione
dell'uscita.
Insomma, ci sono numerose soluzioni per affrontare il problema
posto dall'OP, e ognuna dipende dall'esperienzo e/o dalle
competenze di chi fa l'elaborazione, o anche, dalla sua "pigrizia"
mentale. In questo caso, e' vero che l'OP ha scritto:
"L'OP dichiara e sottoscrive che non è proprio a livello zero con Excel"
ma l'evidenza e' che non sapeva nulla di macro, che anch'io
avrei pensato come prima opzione, per chi non sapesse muoversi
fuori da Excel (scrivendo programmi C o filtri AWK, etc.).
Quindi ho preferito suggerire un altra soluzione che ha l'enorme
vantaggio, quando si trasferisce il file ad altre persone,
di non fare scattare gli allarmi dei controlli di sicurezza
ovvero apparire una "preoccupante" (per chi e' niubbo)
avviso che occorre attivare una qualche opzione ma che
potrebbero esserci rischi informatici nel farlo.
> ciò dipende dall'estensione del
> documento che si copia e significa che si viene a perdere gran parte
> della funzionalità dei filtri, e quindi hai in mano una tabella dove
> magari tutte le colonne sono finite in una unica colonna di excel ...
> che te ne fai?
Bla, bla, bla, bla, l'amante delle teorie, senza alcun senso
pratico nell'immediato.
> Moolto meglio *importare* un documento ridotto a formato testo.
???
>> Niente macro, niente funzioni sofisticate, niente patemi.
>> E funziona anche su alri fogli elettronici, non solo Excel.
>
> Niente macro?: peggio per te,
Guardi che non sono l'OP. Lei pretene che l'OP sappia scrivere
e/o usare le macro ?
> del resto le macro non sono altro che una lista di comandi ...
Ooooohhh, pendo dalle sue labbra maestro, neanche lo sapevo ...
> lanci la macro ed hai lanciato tutti i comandi in
> sequenza ... ma capisco che sia una cosa non alla tua altezza ...
mi cospargo i capo umilmente di cenere ... grande maestro.
> forse
> solo "Archimede Pitagorico" è in grado di fare una cosa così
> sofisticata, eh?
Siete dei veri bastardi nel rendere la vita impossibile ai niubbi.
In ogni caso, ecco come ho fatto io, "mentalmente" pigro, data
la semplicita' del documento di partenza.
Potevo fare un codice elegante con loop intercalate, ma sono pigro e
poi fare il debug della shell e' un pelino piu' "erratico", quindi
ho preferito la soluzione brutta di una riga per ogni gruppo
quartorario, tipo cosi':
sum = $2+$3+$4+$5; printf(",%.3f",sum);
naturalmente ripeterlo per 24 volte, cambiando ogni volta l'indice
$x e' non solo noioso, ma prono di errori. Come chiunque abbia scritto
in C sa, scrivere "Ciao, mondo!" e' facile e quindi altrettanto facile
e fare un programmino C per generare il codice AWK.
Pensato e fatto in un paio di minuti:
---------------------------- inizio codice -------------------------
#include <stdio.h>
int i, sum;
int main () {
printf("printf(\"Giorno");
for(i=0;i<24;i++)
printf(",%d-%d",i,i+1);
printf("\\n\");\n");
for(i=0;i<24;i++) {
printf("sum = $%d+$%d+$%d+$%d;
printf(\",%%.3f\",sum);\n",4*i+2,4*i+3,4*i+4,4*i+5);
}
printf("\n");
}
---------------------------- fine codice -------------------------
Eseguito il programmino e inserito il risultato dentro un file che
ho cripticamente denominato "da_quartorario_a_orario.awk", ecco
il risultato, dove la prima riga l'ho spostata nel "BEGIN" perche'
va eseguita una volta sola:
BEGIN {
FS = ";";
printf("Giorno,0-1,1-2,2-3,3-4,4-5,5-6,6-7,7-8,8-9,9-10,10-11,11-12,12-13,13-14,14-15,15-16,16-17,17-18,18-19,19-20,20-21,21-22,22-23,23-24\n");
}
{
if(NR>1){
printf("%s",$1);
sum = $2+$3+$4+$5; printf(",%.3f",sum);
sum = $6+$7+$8+$9; printf(",%.3f",sum);
sum = $10+$11+$12+$13; printf(",%.3f",sum);
sum = $14+$15+$16+$17; printf(",%.3f",sum);
sum = $18+$19+$20+$21; printf(",%.3f",sum);
sum = $22+$23+$24+$25; printf(",%.3f",sum);
sum = $26+$27+$28+$29; printf(",%.3f",sum);
sum = $30+$31+$32+$33; printf(",%.3f",sum);
sum = $34+$35+$36+$37; printf(",%.3f",sum);
sum = $38+$39+$40+$41; printf(",%.3f",sum);
sum = $42+$43+$44+$45; printf(",%.3f",sum);
sum = $46+$47+$48+$49; printf(",%.3f",sum);
sum = $50+$51+$52+$53; printf(",%.3f",sum);
sum = $54+$55+$56+$57; printf(",%.3f",sum);
sum = $58+$59+$60+$61; printf(",%.3f",sum);
sum = $62+$63+$64+$65; printf(",%.3f",sum);
sum = $66+$67+$68+$69; printf(",%.3f",sum);
sum = $70+$71+$72+$73; printf(",%.3f",sum);
sum = $74+$75+$76+$77; printf(",%.3f",sum);
sum = $78+$79+$80+$81; printf(",%.3f",sum);
sum = $82+$83+$84+$85; printf(",%.3f",sum);
sum = $86+$87+$88+$89; printf(",%.3f",sum);
sum = $90+$91+$92+$93; printf(",%.3f",sum);
sum = $94+$95+$96+$97; printf(",%.3f",sum);
printf("\n");
}
}
END {
}
L'esecuzione del filtro awk si lancia con il seguente commando:
sed "s/\"//g" ExportData_settembre2022.csv | sed "s/\,/./g" \
| awk -f da_quartorario_a_orario.awk
Ed ecco il risultato:
Giorno,0-1,1-2,2-3,3-4,4-5,5-6,6-7,7-8,8-9,9-10,10-11,11-12,12-13,13-14,14-15,15-16,16-17,17-18,18-19,19-20,20-21,21-22,22-23,23-24
01/09/2022,0.186,0.172,0.186,0.159,0.160,0.196,0.195,0.196,0.199,0.139,0.183,0.194,0.337,0.126,0.173,0.154,0.127,0.227,0.139,0.241,0.305,0.234,0.174,0.188
02/09/2022,0.186,0.204,0.159,0.160,0.159,0.214,0.178,0.190,0.190,0.154,0.209,0.174,0.271,0.169,0.098,0.161,0.162,0.223,0.126,0.341,0.225,0.284,0.196,0.183
03/09/2022,0.204,0.184,0.161,0.160,0.158,0.226,0.157,0.157,0.205,0.222,0.184,0.224,0.174,0.149,0.125,0.209,0.229,0.095,0.262,0.307,0.261,0.191,0.191,0.158
04/09/2022,0.209,0.202,0.158,0.174,0.186,0.196,0.158,0.157,0.177,0.163,0.161,0.228,0.181,0.187,0.122,0.136,0.213,0.154,0.201,0.203,0.259,0.181,0.183,0.195
05/09/2022,0.215,0.159,0.159,0.159,0.165,0.210,0.195,0.202,0.233,0.145,0.110,0.165,0.178,0.164,0.139,0.112,0.103,0.154,0.139,0.279,0.189,0.280,0.159,0.200
06/09/2022,0.185,0.191,0.159,0.160,0.159,0.245,0.194,0.219,0.176,0.149,0.143,0.124,0.171,0.123,0.145,0.118,0.144,0.214,0.324,0.267,0.192,0.272,0.158,0.171
07/09/2022,0.187,0.159,0.158,0.160,0.158,0.200,0.196,0.209,0.171,0.156,0.126,0.177,0.113,0.105,0.104,0.159,0.161,0.116,0.148,0.265,0.188,0.241,0.182,0.160
08/09/2022,0.157,0.159,0.182,0.159,0.159,0.217,0.195,0.181,0.208,0.169,0.112,0.137,0.139,0.141,0.116,0.123,0.112,0.170,0.171,0.224,0.318,0.190,0.250,0.188
09/09/2022,0.173,0.177,0.189,0.159,0.158,0.201,0.205,0.188,0.191,0.125,0.140,0.126,0.157,0.221,0.132,0.202,0.128,0.158,0.214,0.190,0.251,0.209,0.184,0.183
10/09/2022,0.251,0.183,0.160,0.160,0.176,0.198,0.177,0.177,0.183,0.177,0.191,0.191,0.214,0.151,0.197,0.122,0.161,0.168,0.184,0.389,0.279,0.157,0.185,0.166
11/09/2022,0.214,0.170,0.179,0.158,0.190,0.159,0.188,0.157,0.178,0.149,0.136,0.107,0.249,0.127,0.132,0.262,0.188,0.143,0.172,0.208,0.199,0.225,0.195,0.191
12/09/2022,0.159,0.158,0.158,0.160,0.158,0.160,0.228,0.228,0.278,0.209,0.228,0.226,0.199,0.121,0.098,0.142,0.191,0.195,0.334,0.229,0.222,0.223,0.229,0.170
13/09/2022,0.206,0.160,0.160,0.160,0.160,0.201,0.207,0.217,0.247,0.196,0.180,0.131,0.291,0.126,0.144,0.138,0.116,0.157,0.214,0.331,0.271,0.200,0.247,0.187
14/09/2022,0.189,0.158,0.158,0.158,0.157,0.178,0.208,0.220,0.212,0.168,0.225,0.175,0.301,0.150,0.127,0.199,0.178,0.240,0.193,0.256,0.241,0.284,0.184,0.176
15/09/2022,0.200,0.158,0.157,0.158,0.158,0.158,0.220,0.237,0.226,0.208,0.174,0.226,0.235,0.195,0.108,0.154,0.151,0.170,0.187,0.311,0.189,0.195,0.224,0.200
16/09/2022,0.159,0.158,0.158,0.158,0.158,0.192,0.188,0.257,0.219,0.188,0.244,0.207,0.304,0.220,0.205,0.183,0.145,0.238,0.195,0.353,0.228,0.280,0.166,0.209
17/09/2022,0.210,0.159,0.160,0.173,0.159,0.198,0.175,0.158,0.203,0.207,0.196,0.266,0.222,0.245,0.200,0.159,0.196,0.168,0.265,0.222,0.293,0.229,0.249,0.197
18/09/2022,0.195,0.161,0.173,0.159,0.159,0.184,0.158,0.156,0.177,0.248,0.213,0.214,0.264,0.131,0.153,0.184,0.183,0.198,0.156,0.203,0.287,0.230,0.224,0.201
19/09/2022,0.174,0.158,0.159,0.159,0.157,0.157,0.225,0.217,0.261,0.195,0.162,0.207,0.266,0.129,0.146,0.147,0.182,0.140,0.229,0.483,0.259,0.261,0.182,0.234
20/09/2022,0.160,0.160,0.158,0.159,0.158,0.178,0.208,0.239,0.205,0.170,0.217,0.212,0.167,0.156,0.158,0.208,0.236,0.183,0.328,0.258,0.266,0.277,0.222,0.196
21/09/2022,0.159,0.159,0.160,0.159,0.159,0.159,0.229,0.228,0.236,0.176,0.182,0.219,0.217,0.150,0.225,0.183,0.250,0.285,0.236,0.235,0.286,0.253,0.162,0.222
22/09/2022,0.159,0.187,0.159,0.158,0.157,0.179,0.189,0.264,0.201,0.145,0.221,0.120,0.203,0.132,0.175,0.262,0.116,0.371,0.114,0.342,0.194,0.264,0.188,0.255
23/09/2022,0.218,0.182,0.159,0.159,0.158,0.158,0.218,0.213,0.264,0.150,0.169,0.152,0.367,0.221,0.129,0.200,0.219,0.142,0.158,0.244,0.292,0.220,0.184,0.207
24/09/2022,0.158,0.184,0.159,0.175,0.160,0.179,0.177,0.172,0.239,0.159,0.184,0.234,0.265,0.244,0.125,0.163,0.178,0.195,0.249,0.310,0.249,0.292,0.243,0.231
25/09/2022,0.194,0.159,0.159,0.159,0.175,0.158,0.158,0.159,0.216,0.222,0.178,0.253,0.246,0.184,0.197,0.177,0.176,0.253,0.343,0.252,0.280,0.240,0.212,0.199
26/09/2022,0.168,0.163,0.159,0.160,0.159,0.175,0.246,0.301,0.209,0.586,0.227,0.170,0.238,0.154,0.305,0.154,0.188,0.206,0.285,0.394,0.240,0.266,0.222,0.202
27/09/2022,0.158,0.159,0.159,0.159,0.159,0.158,0.171,0.277,0.218,0.207,0.172,0.239,0.217,0.111,0.133,0.142,0.233,0.177,0.220,0.345,0.318,0.223,0.170,0.175
28/09/2022,0.160,0.158,0.158,0.158,0.158,0.183,0.208,0.219,0.220,0.169,0.144,0.175,0.192,0.228,0.137,0.121,0.231,0.103,0.232,0.291,0.213,0.225,0.213,0.158
29/09/2022,0.221,0.158,0.158,0.157,0.158,0.171,0.197,0.247,0.258,0.125,0.211,0.315,0.240,0.098,0.153,0.216,0.239,0.317,0.166,0.284,0.204,0.314,0.164,0.226
30/09/2022,0.186,0.173,0.158,0.158,0.159,0.179,0.196,0.246,0.189,0.152,0.131,0.227,0.219,0.256,0.103,0.137,0.208,0.282,0.293,0.209,0.193,0.288,0.157,0.213
Notare come in un solo colpo ho fatto varie manipolazioni, come
ripulire via gli stupidi doppi apici, sostituire la virgola con
il punto decimale (che per chi lavora spesso con documenti inglesi
diventa una mina vagante) e trasformare il file in un vero file CSV
(cosa non possibile per chi usa la virgola come separatore decimale)
e forzare le tre cifre decimali (che rende il file CSV piu' leggibile)
Se vuole puo' controllare la prima riga del file originale che ho
citato all'inizio con il risultato e vedere se la somma e' corretta:
01/09/2022,0.186,0.172,0.186,0.159,0.160,0.196,0.195,0.196,0.199,0.139,0.183,0.194,0.337,0.126,0.173,0.154,0.127,0.227,0.139,0.241,0.305,0.234,0.174,0.188
PS: curiosoni, non e' il mio file, ma di uno dei contatori del
mio condominio.