Соответствие значений между 2 диапазонами непрерывно и вставка значения в разные цвета, если это правда - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть лист Google с 2 вкладками, BOMSheet и POProcess. Я хочу скопировать номер заказа на поставку с технологического листа, просмотрев значения столбца B листа POProcess (один за другим непрерывно) в значениях столбца D листа спецификации, и при совпадении вставив номер заказа в столбец M листа спецификации ( для всех значений, которые совпадают). вот ссылка на лист.

https://docs.google.com/spreadsheets/d/1MqYn2AjPncx-RvvyTS8Nj0ujpm9Lcd_ORJF9Wqbw6y0/edit?usp=sharing

Я попробовал приведенный ниже код, но он не работает, так как он проверяет только одно значение из таблицы процессов PO. Помогите пожалуйста как перебрать значения из технологического листа ПО

функция UpdateStatus () {

var sss = SpreadsheetApp.getActiveSpreadsheet();
var ss = sss.getSheetByName('POProcess'); //replace with source Sheet tab name
var range = ss.getRange('C4'); //assign the range you want to copy
var data = range.getValues();

var range2 = ss.getRange('B8'); //value to look for to be replaced
var data2 = range2.getValues();

var sheet = sss.getSheetByName('BOMSheet');
var range3 = sheet.getRange('A:L');
var values = range3.getValues();
for (var i = 0; i < values.length; i++) {
  if (values[i][3] == data2) {
   values[i][12] = data;

  }
}
range3.setValues(values);

}

1 Ответ

0 голосов
/ 17 апреля 2019

Вы можете использовать эту функцию только для номера заказа на поставку.

function UpdateStatus() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var pSheet = ss.getSheetByName('POProcess'); //replace with source Sheet tab name
  var pNumber = pSheet.getRange('C4').getValue(); //assign the range you want to copy

  var pRange = pSheet.getRange(8, 2, pSheet.getLastRow()-7, 1); //value to look for to be replaced
  var pData = pRange.getValues().map(function(el) {
    return el[0];
  });

  var sheet = ss.getSheetByName('BOMSheet');
  var range3 = sheet.getDataRange();
  var values = range3.getValues();

  values.forEach(function(row) {
    if (row[3] == '') return;
    if (pData.indexOf(row[3]) > -1) {
      row[12] = pNumber;
    }
  });

  range3.setValues(values);
}

Для отображения столбца 'Qty Received' также попробуйте это.

function UpdateStatus() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var pSheet = ss.getSheetByName('POProcess'); //replace with source Sheet tab name
  var pNumber = pSheet.getRange('C4').getValue(); //assign the range you want to copy

  var pRange = pSheet.getRange(8, 2, pSheet.getLastRow() - 7, pSheet.getLastColumn()-1); //values to map
  var pData = {};
  pRange.getValues().forEach(function(row) {
    pData[row[0]] = row[6];
  });

  var sheet = ss.getSheetByName('BOMSheet');
  var range3 = sheet.getDataRange();
  var values = range3.getValues();

  values.forEach(function(row) {
    if (row[3] == '') return;
    if (typeof pData[row[3]] != 'undefined') {
      row[12] = pNumber;
      row[13] = pData[row[3]];
    }
  });

  range3.setValues(values);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...