2014-12-17 6 views
0

Я хочу автосортировать редактор сценариев в Google Таблицах. У меня в Google Sheets несколько колонок:Листы Google, функция сортировки

+--------+------------+-------+--------+------------+ 
| Region | Mag  | Comp | Region | Mag  | 
+--------+------------+-------+--------+------------+ 
| A  | MIKA  | TRUE | A  | MIKA  | 
| B  | KALO  | FALSE | B  | NOKA  | 
| C  | MINA  | FALSE | C  | South-East | 
| D  | North  | TRUE | D  | North  | 
| B  | NOKA  | FALSE | B  | KALO  | 
| C  | South-East | FALSE | C  | MINA  | 
+--------+------------+-------+--------+------------+ 

Я хотел бы, чтобы соответствовать два столбца (регион, Mag) на левой с двумя столбцами (область, Mag) справа, так что в конце концов я будет иметь мою сравнительную колонку (которая имеет формулу =exact(string1,string2)) только с TRUE.

Я хочу иметь кнопку, чтобы мои две колонки (Region, Mag) справа от Comp могли сортировать себя.

У меня был сценарий, благодаря @JPV

function onOpen() { 
SpreadsheetApp.getUi().createMenu('Sort').addItem('Sort Col D and E', 'sort').addToUi(); 
} 

function sort() { 
var ss = SpreadsheetApp.getActiveSheet(); 
var srange = ss.getRange('A2:B7').getValues(); 
var trange = ss.getRange('D2:E7'); 
var trangeVal = trange.getValues(); 
var returnarr = []; 
for (var i = 0, ilen = trangeVal.length; i < ilen; i++) { 
    for (var j = 0, jlen = srange.length; j < jlen; j++) { 
     if (trangeVal[i][0] == srange[j][0] && trangeVal[i][1] == srange[j][1]) { 
      returnarr[j] = trangeVal[i]; 
     } 
    } 
} 
trange.setValues(returnarr); 
} 

Но, кажется, не работает, и бросает ошибку, как «Не удается преобразовать массив в Object [] []»

Любая помощь, пожалуйста! Снова благодаря @JPV

+0

Так что извините, не знаю, как идентифицировать мой код. У меня на самом деле 5 столбцов с 7 строками. Не знаю, как писать массивы здесь – user3438349

+0

Совместное использование таблицы с некоторыми примерами данных также является хорошим вариантом. – JPV

+0

Я знаю, что вставляю его в свой пост, но, похоже, не знаю, как его организовать. – user3438349

ответ

0

Ok. Может быть, этот скрипт вам поможет?

function onOpen() { 
SpreadsheetApp.getUi().createMenu('Sort').addItem('Sort Col D and E', 'sort').addToUi(); 
} 

function sort() { 
var ss = SpreadsheetApp.getActiveSheet(); 
var srange = ss.getRange('A2:B7').getValues(); 
var trange = ss.getRange('D2:E7'); 
var trangeVal = trange.getValues(); 
var returnarr = []; 
for (var i = 0, ilen = trangeVal.length; i < ilen; i++) { 
    for (var j = 0, jlen = srange.length; j < jlen; j++) { 
     if (trangeVal[i][0] == srange[j][0] && trangeVal[i][1] == srange[j][1]) { 
      returnarr[j] = trangeVal[i]; 
     } 
    } 
} 
trange.setValues(returnarr); 
} 

Примечание: это будет работать только тогда, когда значения в D & Е, где можно найти в A & B. Также следует знать о том, что его перезаписывает значения в D & E.

Test sheet here

+0

Спасибо за помощь – user3438349

+0

Hellp @JPV. извините, что продолжайте беспокоить вас по этой теме. Но можете ли вы немного объяснить этот код. Фактически, я запускаю функцию OnOpen, которые создают сортировку меню. Но когда я нажимаю на кнопку сортировки, я запускаю эту ошибку. Невозможно преобразовать массив в объект [] [] – user3438349

+0

Можете ли вы создать примерный лист с прикрепленным кодом, чтобы я мог посмотреть? – JPV

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