Выбор случайной ячейки, игнорирование пустого - PullRequest
1 голос
/ 23 марта 2020

Мои навыки кодирования не самые лучшие, но я немного знаю, как использовать Excel / Sheets.

Я пытаюсь заставить ячейку выбрать случайную ячейку в столбце, но игнорирую ячейки, которые опорожнить. Так что, я могу заставить его выбрать случайную ячейку, но как мне сделать так, чтобы она оставалась пустой, если она пуста? Волхвы c Режим сбора игры: Орда, и использовать Google Sheet в качестве «вражеской» колоды. Ниже ссылка просто образец. Не актуальная идея.

https://docs.google.com/spreadsheets/d/1XKMCguvpI_4PDtBYVXa4_FaH7O3WgckRWYbQ75_5F7E/edit?usp=sharing

Ответы [ 3 ]

0 голосов
/ 23 марта 2020

Вы можете использовать:

=INDEX(SORT(FILTER({RANDARRAY(G3:G), G3:G}, L3:L=TRUE)), 1, 2)

для получения случайного идентификатора 1 или ID 9

0

=TRUE может быть изменено на <>"" для имитации пустой ячейки


для имени щенка:

=VLOOKUP(INDEX(SORT(FILTER({RANDARRAY(G3:G), G3:G}, L3:L=TRUE)), 1, 2), G:H, 2, 0)

или просто:

=INDEX(SORT(FILTER({RANDARRAY(G3:G), H3:H}, L3:L=TRUE)), 1, 2)
0 голосов
/ 23 марта 2020
function pickANonEmptyRandomCellFromARange() {
  const ss=SpreadsheetApp.getActive();
  const sh=ss.getActiveSheet();
  const rg=sh.getDataRange();
  const vs=rg.getDisplayValues();
  let v=[];
  //This loops through all of the rows r stands for the row element  is the index
  vs.forEach(function(r,i){
    //this loops through each column and c stands for the cell element  j is the index
    r.forEach(function(c,j) {
      //this asks if the cell is not blank thee push the A1Notation into an array
      if(c){v.push(sh.getRange(i+1, j+1).getA1Notation());}
    });
  });
  //This is a dialog which displays v[random index] which is the A1 Notation of the selected element. 
  SpreadsheetApp.getUi().showModelessDialog(HtmlService.createHtmlOutput(v[Math.floor(Math.random()*v.length)]), 'Random Non Empty Cell');
}
0 голосов
/ 23 марта 2020

Ответ:

Вы можете определить столбец как диапазон, pu sh только непустые ячейки массива и выбрать случайный элемент.

Код:

Предполагается, что столбец, который вы хотите выбрать, - это столбец A in a sheet called Лист1 , and starts from A`:

function selectRandomCell() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var range = ss.getSheetByName("Sheet1").getRange("A1:A").getValues();
  var values = [];

  for (var i = 0; i < range.length; i++) {
    if (range[i][0] == "") {
      continue;
    }
    else {
      values.push(range[i][0]);
    }
  }

  return values[Math.floor(Math.random() * values.length)]);
}

Однако вы можете изменить диапазон по своему усмотрению.

Надеюсь, это поможет вам!

...