Cellen verwijderen macro bij waarde 'Waar'

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • RaymondTweetT
  • Registratie: Januari 2015
  • Laatst online: 12-05-2020
Hallo,

Ik ben bezig met een bestand in Google Sheets waarbij ik een checkbox gebruik (waar / onwaar). Op een gegeven moment ben ik klaar met een opdracht en vink ik het af met de checkbox (als een takenlijst). Aan het einde van de dag wil ik de afgeronde taken van de takenlijst wissen.

De checkbox waardes zijn 'waar' en 'onwaar'. Als de waardes staan op 'waar' dan wil ik dat ik met een knop 'Delete' alle opdrachten en gegevens waar 'waar' bij staat verwijderen. Ik heb de macro vormgegeven en kan de gehele rij verwijderen. Echter, ik moet niet de hele rij verwijderen, alleen het stuk D tot en met K.

In het voorbeeld heb ik opdracht Mario uitgevoerd en afgevinkt met de checkbox. Ik wil nu graag de opdracht uit mijn lijst verwijderen (het stuk D tot en met K).

De Macro
De macro die ik zelf heb om een complete rij te verwijderen:
function deleteCells() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getSheetByName('Blad1');
var r = s.getRange('K:K');
var v = r.getValues();
for(var i=v.length-1;i>=0;i--)
if(v[0,i]=='true')
s.deleteRow(i+1);
};


Hoe kan ik dit ombouwen dat hij hetzelfde doet, maar niet de complete rij verwijderd, maar alleen de waardes tussen D tot en met K.

Het voorbeeld document
https://docs.google.com/s...5zuHMWXg/edit?usp=sharing

Alle reacties


Acties:
  • +1 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
Wat dacht je van door de cellen 'loopen' en de waardes op "" of Null zetten?

Maar:
• Wat had je zelf al gevonden?
• Je voorbeelddocument is te ver beveiligd om iets mee te kunnen.
• En zet je code even tussen [code=javascript]-tags.
• En kom je deze keer wel terug in je eigen topic? ;)

[ Voor 10% gewijzigd door Room42 op 24-08-2019 00:42 ]

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • RaymondTweetT
  • Registratie: Januari 2015
  • Laatst online: 12-05-2020
Hallo Evanescent,

Laat ik heel eerlijk zijn. Ik ben bezig met dit document, maar al mijn informatie moet ik hebben van kant en klare codes op het internet :X

Ik weet niets van coderen af, ik weet dat die codes macro heten, maar zelf eentje bouwen is mij nog nooit gelukt. Soms heb ik geluk dat ik iets voor elkaar krijg door een macro op te nemen.... Nu begon ik Excel een klein beetje te snappen, maar hetgeen wat ik met het document wilt vraagt er om dat meerdere mensen tegelijk kunnen bewerken. Vandaar Google Sheets en een nieuw obstakel :P

Ik heb het document inmiddels openbaar gegooid als het goed is:
https://docs.google.com/s...5zuHMWXg/edit?usp=sharing

De informatie die ik vind op internet zorgen ervoor dat:
Ik alleen een hele rij kan verwijderen of het lukt mij niet om alleen bepaalde cellen te laten verwijderen, want dan krijg ik steeds een error met dat de data niet gevonden kan worden. De foutmelding is dan databereik (D:K) niet gevonden.

Dit zal wel erg stom zijn, maar ik weet eerlijk gezegd niet wat je bedoelt met code Javascript. Sorry anders had ik dat graag voor je gedaan:$!

Bij deze ben ik dit keer wel teruggekomen op mijn eigen topic :) :)

Acties:
  • +1 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
RaymondTweetT schreef op zaterdag 24 augustus 2019 @ 00:57:
Hallo Evanescent,

Laat ik heel eerlijk zijn. Ik ben bezig met dit document, maar al mijn informatie moet ik hebben van kant en klare codes op het internet :X

Ik weet niets van coderen af, ik weet dat die codes macro heten, maar zelf eentje bouwen is mij nog nooit gelukt. Soms heb ik geluk dat ik iets voor elkaar krijg door een macro op te nemen.... Nu begon ik Excel een klein beetje te snappen, maar hetgeen wat ik met het document wilt vraagt er om dat meerdere mensen tegelijk kunnen bewerken. Vandaar Google Sheets en een nieuw obstakel :P
Laat ik voorop stellen dat ik ook erg weinig verstand heb van Google Doc's macro's maar mijn Google-linkje gaf al nuttige resultaten, dus daar zou je je toch wel in kunnen verdiepen. Je wilt in ieder geval van regel 8 af:
JavaScript:
1
2
3
4
5
6
7
8
9
function deleteCells() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getSheetByName('Blad1');
  var r = s.getRange('K:K');
  var v = r.getValues();
  for(var i=v.length-1;i>=0;i--)
    if(v[0,i]=='true')
      s.deleteRow(i+1);
};


Daarvan zou ik maken:
JavaScript:
1
2
3
4
5
6
7
8
9
10
function deleteCells() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getSheetByName('Blad1');
  var r = s.getRange('K:K');
  var v = r.getValues();
  for(var i=v.length-1;i>=0;i--)
    if(v[0,i]=='true')
      // Wil je echt dat ik het voorkauw? Of wil je zelf even puzzelen?
      // De hint vind je in s.getRange(row, column, numRows, numColumns) en clear() ;)
};
Ik heb het document inmiddels openbaar gegooid als het goed is:
https://docs.google.com/s...5zuHMWXg/edit?usp=sharing
Ik kan daar nog niet bij de script-editor zonder in te loggen dus ik heb zelf even een sheet gemaakt. Je moet zo te zien je code nog importeren, trouwens.
De informatie die ik vind op internet zorgen ervoor dat:
Ik alleen een hele rij kan verwijderen of het lukt mij niet om alleen bepaalde cellen te laten verwijderen, want dan krijg ik steeds een error met dat de data niet gevonden kan worden. De foutmelding is dan databereik (D:K) niet gevonden.
Ik zou de taal op Engels zetten, dat scheelt enorm in de zoekresultaten op zulke foutmeldingen. :X
Dit zal wel erg stom zijn, maar ik weet eerlijk gezegd niet wat je bedoelt met code Javascript. Sorry anders had ik dat graag voor je gedaan:$!
Klik het linkje! ;)
Bij deze ben ik dit keer wel teruggekomen op mijn eigen topic :) :)
Super d:)b

edit:
Ik zet het hier maar neer, dan kan ik de boel weer afsluiten en weggooien:
spoiler:
Bronnen:
- https://developers.google...,Integer,Integer,Integer)
- https://developers.google...e/spreadsheet/range#clear

Code:

function deleteCells() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getSheetByName('Blad1');
  var r = s.getRange('K:K');
  var v = r.getValues();
  for(var i=v.length-1;i>=0;i--)
    if(v[0,i]=='true')
      s.getRange(i+1, 4, 1, 8).clear({contentsOnly: true});
};

[ Voor 15% gewijzigd door Room42 op 24-08-2019 01:43 ]

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • +1 Henk 'm!

  • RaymondTweetT
  • Registratie: Januari 2015
  • Laatst online: 12-05-2020
Hallo Evanescent,

Ik heb ontzettend veel zitten stoeien met rijen, cellen, maar ik kwam er niet compleet uit. Op een gegeven moment dat ik het antwoord te hebben, maar deed die nog net niet helemaal wat ik wou doen :$

De linkjes waren overigens wel ontzettend handig en ik was er wel in de buurt. Uiteindelijk heb ik toch gespiekt bij je antwoord en ik had die opzet nooit zelf gevonden dus ontzettend bedankt voor je hulp. Ik heb er wel wat mee gespeeld en wat dingetjes aangepast om te kijken wat ik er mee kon. Het lukte me op een gegeven moment om de cellen helemaal blank te maken, de kolommen iets te laten opschuiven en om de macro alles ook op alfabetische volgorde te laten zetten. Allemaal dankzij jou hulp, hartstikke bedankt!

  • armageddon_2k1
  • Registratie: September 2001
  • Laatst online: 25-04 18:21
Misschien een rare vraag, maar waarom gebruik je niet gewoon een filter?

Engineering is like Tetris. Succes disappears and errors accumulate.

Pagina: 1