2016-08-08 3 views
0

У меня есть 30 столбцов и 1000 строк, я хотел бы сравнить column1 с другим столбцом. Если значение не совпадает, тогда я хотел бы покрасить его в красный цвет. Ниже приведен небольшой набор данных в моей таблице:Как сравнить два столбца в электронной таблице

 A  B  C  D E F ... 
1 name sName email 
2 
3 
. 
n 

Потому что у меня есть большой набор данных, и я хочу, чтобы хранить мои столбцы в массиве, то первая строка движется. Это то, что я сделал, однако при тестировании я получаю пустой результат, может кто-то исправить меня, что я делаю неправильно?

var index = []; 
 
var sheet = SpreadsheetApp.getActiveSheet(); 
 

 
function col(){ 
 
    var data = sheet.getDataRange().getValues(); 
 
    for (var i = 1; i <= data.length; i++) { 
 
     te = index[i] = data[1]; 
 
     Logger.log(columnIndex[i]) 
 
     if (data[3] != data[7]){ 
 
      // column_id.setFontColor('red'); <--- I can set the background like this 
 
     } 
 
    } 
 
}

Из кода вы можете увидеть, я сканирование целых таблиц данных [1] получить заголовок и если петля (data[3] != data[7]) сравнить два столбца. Мне нужно работать с моей цветовой переменной, но это можно сделать, как только я получу нужные мне данные.

+0

данный * сравнение column1 другой колонка. Если значение не совпадает, тогда я хотел бы его окрасить в красный цвет. * Условное форматирование, похоже, будет всем, что вам нужно. – pnuts

+0

@pnuts да, ваш правильный, однако я бы хотел, чтобы эта таблица имела другие сложные функции (это было простое). – tranmaster

+0

У вас уже проблемы с простыми, они плохо боятся тех, которые сложны. Возможно, решение для скрипта поможет вам понять код для остальной части скрипта, но для меня это кажется странным выбором. – pnuts

ответ

0

Постарайтесь проверить это tutorial, если оно может помочь вам с вашей проблемой. В этом учебном пособии используется Google AppsScript для сравнения двух столбцов. Если различия обнаружены, сценарий должен указывать на них. Если различий не обнаружено вообще, сценарий должен вывести текст «[id]». Просто настройте этот код для своей собственной функции.

Вот код, используемый для достижения такого рода сравнения

function stringComparison(s1, s2) { 
    // lets test both variables are the same object type if not throw an error 
    if (Object.prototype.toString.call(s1) !== Object.prototype.toString.call(s2)){ 
    throw("Both values need to be an array of cells or individual cells") 
    } 
    // if we are looking at two arrays of cells make sure the sizes match and only one column wide 
    if(Object.prototype.toString.call(s1) === '[object Array]') { 
    if (s1.length != s2.length || s1[0].length > 1 || s2[0].length > 1){ 
     throw("Arrays of cells need to be same size and 1 column wide"); 
    } 
    // since we are working with an array intialise the return 
    var out = []; 
    for (r in s1){ // loop over the rows and find differences using diff sub function 
     out.push([diff(s1[r][0], s2[r][0])]); 
    } 
    return out; // return response 
    } else { // we are working with two cells so return diff 
    return diff(s1, s2) 
    } 
} 

function diff (s1, s2){ 
    var out = "[ "; 
    var notid = false; 
    // loop to match each character 
    for (var n = 0; n < s1.length; n++){ 
    if (s1.charAt(n) == s2.charAt(n)){ 
     out += "–"; 
    } else { 
     out += s2.charAt(n); 
     notid = true; 
    } 
out += " "; 
    } 
    out += " ]" 
    return (notid) ? out : "[ id. ]"; // if notid(entical) return output or [id.] 
} 

Для получения дополнительной информации, просто проверить ссылку учебник выше, и это SO question о том, как сравнить две электронные таблицы.

Смежные вопросы