Spostamento di valori specifici indicizzati da un Array in un altra posizione

di il
1 risposte

Spostamento di valori specifici indicizzati da un Array in un altra posizione

Ciao

dopo aver effettuato un confronto tra due array e aver ottenuto un output con i numeri uguali nei due array

colonna 1 = 1 ,2,3,6,5
colonna 2 = 7,6,1,8,2
output = 1,2,6

vorrei fare in modo che i numeri uguali si spostano da quello che è la colonna 1
quindi l' output = 1,2,6 si sposti dalla colonna 1 e vada nella colonna es. 5

quindi :
colonna 1 = 3,5
colonna 2 = 7,6,1,8,2
output = 1,2,6


function myFunction() {

var Foglio1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Foglio1");
var Foglio2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Foglio1");
var scrittura = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Foglio1") ;

var colonna1 = [];
var colonna2 = [];
var i = 1;
var j = 1;

while(Foglio1.getRange(i,1).getValue() != ""){
colonna1.push(Foglio1.getRange(i,1).getValue());
i++;
}

while(Foglio2.getRange(j,1).getValue() != ""){
colonna2.push(Foglio2.getRange(j,2).getValue());
j++;
}

var riga = 1 ;
var colonna = 5 ;

// da qua non so come iniziare il ciclo di confronto e lo spostamento dei specifici valori che sono uguali tra loro
for ( var x=0 ; x < colonna1.length ; x++){
for ( var z=0; z < colonna2.length ; z++){
if ( colonna1[x]== colonna2[z]){
colonna1.splice( riga , colonna ).setValue(colonna1[x]);
riga++;
}
}
}
}

grazie tante per l'aiuto!!!

1 Risposte

  • Re: Spostamento di valori specifici indicizzati da un Array in un altra posizione

    Ciao

    Andrea Dragotta mi ha dato una mano a capire la soluzione

    e scritto in questo modo utilizzando bene i "Range().getValues()" e "Range().setValues()"
    si trova una soluzione

    function check() {

    var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("INSERIMENTO");

    fonte = sh.getRange("A3:C").getValues();
    confronto = sh.getRange("G3:G").getValues().flat();

    // Estraiamo i dati da copiare
    let daCopiare = []
    for (let i=0; i<fonte.length; i++) {

    let riga = fonte;

    if (confronto.includes(riga[0])) {
    // La data 'codificata' è presente nella colonna G
    datiRiga = riga.slice(1); // Tolgo la data in codice dalla riga che verrà copiata
    daCopiare.push(datiRiga);
    riga[0] = ""; // In questo modo sappiamo quali righe eliminare dopo
    }
    }

    // Eliminiamo tutte le righe che sono state già copiate
    let nuovaColonna = fonte.filter( (riga) => riga[0] !== "" );

    // Copia le colonne "Data" e "Prodotto" (B-C) nelle colonne H-I
    sh.getRange(`H3:I${daCopiare.length + 3}`).setValues(daCopiare);

    // Rimuove il contenuto delle colonne che sono state controllate
    sh.getRange(`A3:C${fonte.length + 3}`).clearContent();

    // Inseriamo solo le righe che non erano presenti nella colonna di controllo
    sh.getRange(`A3:C${nuovaColonna.length + 3}`).setValues(nuovaColonna);
    }
Devi accedere o registrarti per scrivere nel forum
1 risposte