2016-09-18 7 views
-2

У меня есть лист с информацией о клиенте и другим листом, на котором информация о клиентах должна идти, если она соответствует определенным условиям. Например, один лист у меня есть клиент с уникальным идентификатором, а на листе 2 у меня есть несколько столбцов, которые можно было бы отключить. Если эти столбцы галочка мне нужно эти заголовки столбцов, которые будут заселены в одну ячейку в листе 1. ТакGoogle Таблицы нуждаются в функции для сопоставления проверенной ячейки с одного листа для заполнения ячейки на другом листе

John Doe 019384388 Eats cookies 
         Likes Movies 
         Needs Help from Stack exchange 

из листа 1 листа 2

Name  uniques idetifier Eats cookies Likes movies Is tired Needs help 
John Doe 019384388    X    X      X 

Я действительно не работал с JavaScript , это просто то, что я играю на работе, чтобы упростить некоторые электронные таблицы. Я работал с C, C++ и java, поэтому я разбираюсь в операторах условий и циклах. Я пытаюсь в javascript, но мне трудно понять, как обращаться к отдельным ячейкам в электронных таблицах, чтобы делать утверждения условий, например if (box == "x" & & unique id == "xxxxxx") cell (" Ai "(sheet1) =" Ai "(sheet2)). И, возможно, итерация через все ячейки с использованием цикла for, который меняет меня, пока все ячейки не будут проверены. Любая помощь приветствуется.

+0

@ Тим Уильямс, ОП теперь с помощью формул Excel как возможность. можете ли вы добавить тег Excel? – MacroMarc

+0

@MacroMarc - Я не поклонник вопросов с тегами, которые касаются электронной таблицы Google с помощью Excel, просто потому, что в синтаксисе формулы (хотя и большой) есть некоторое перекрытие. Вопрос должен быть в состоянии самостоятельно стоять под google-таблицей. Любой может свободно добавлять тег, если они считают, что это уместно. –

+0

ОП, что-нибудь помогло до сих пор? – MacroMarc

ответ

1

Добавить строку, сцепляет заголовки, если флажок:

=if(B1 = 'x', $A$1, '') & if(B2 = 'x', $A$2, '') & ...

затем ВПР() на ID и вернуть каскадное поле.

Добавьте разделители запятой в операторы if, если вы хотите их, и спрячьте конкатенированное поле, если вы не хотите видеть его в таблице.

+0

Как установить vlookup в оператор IF. Вот что я имею: = IF ('Sheet2! Q4 = "X",' Sheet2! Q3, "") & CHAR (10) & IF ('Sheet2! R4 = "X",' Sheet2! R3, "") & CHAR (10) & IF ('Sheet2! S4 = "X",' Sheet2! S3, "") & CHAR (10) & IF ('Sheet2! T4 = "X",' Sheet2! T3, "") & CHAR (10) & IF ('Sheet2! U4 = "X",' Sheet2! U3, "") & CHAR (10) & IF ('Sheet2! V4 = "X",' Sheet2! V3, "") & CHAR (10) & IF ('Sheet2! W4 = "X",' Sheet2! W3, "") & CHAR (10) & IF ('Sheet2! X4 = "X",' Sheet2! X3, "") & CHAR (10) & IF ('Sheet2! Y4 = "X",' Sheet2! Y3, "") & CHAR (10) & IF ('Sheet2! Z4 = "X",' Sheet2! Z3, "") –

+0

Мой vlookup выглядит следующим образом: (ВПР (A4, 'Лист2' A4: A465,1, FALSE)). –

2

Вы можете создать пользовательскую функцию Google Apps, а также добавить onedit триггер это .:

function autoCheck(e) { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet1 = ss.getSheetByName("Sheet1"); 
    var row = e.range.getRow(); 
    var col = e.range.getColumn(); 
    var sheet2 = ss.getSheetByName("Sheet2"); 
    if (e.range.getSheet().getName()=="Sheet2" && col >=3 && col<=5) { 
    var str = ""; 
    for (i=3; i<=6; i++) { 
     if (sheet2.getRange(row, i).getValue()=="X") { 
      if (str.length==0) { 
       str = sheet2.getRange(1, i).getValue(); 
      } else { 
      str =str + "\n" + sheet2.getRange(1, i).getValue(); 
      } 
     } 
    } 
    sheet1.getRange(row, 3).setValue(str); 
    } 
} 
+0

Или вы можете использовать форму в стиле Excel – MacroMarc