2015-03-08 2 views
0

В моей таблице в колонке XI имеет следующий формуляр:Google Spreadsheet: Используйте колонки + п в формульной

=ImportRange('_keys'!$B$2;"2015!A200:A203") 

Теперь я хотел бы, чтобы скопировать этот формуляр для столбца X + п (в этом случае X + 2), так что он должен выглядеть следующим образом:

=ImportRange('_keys'!$B$2;"2015!C200:C203") 

Но это не меняет столбец, и я должен изменить его вручную. Можно ли изменить этот формуляр, чтобы он всегда использовал столбец, в котором находится формуляр?

+0

Я не думаю, что вы можете, потому что вам нужно пройти в диапазоне как range_string, обернув его в кавычки. Из-за этого клетки не изменятся задним числом. – Andy

+0

Окончательный Я получил его работу. См. Мое решение ниже. –

ответ

0

Мое решение:

Я написал простую пользовательскую функцию, которая преобразует числа в буквы.

/** 
    * Converts number of column into column letter 
    * 
    * @param {Number} aNumer Number of column 
    * @return {String} Letter of column 
    * @customfunction 
    */ 
    function COL_NR2LETTER(aNumber) { 
     var letterArray = ['-', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ']; 
     if (aNumber < 1 || aNumber > letterArray.length) 
     throw "column index out of bound error"; 

     return letterArray [aNumber]; 
    } 

Теперь его можно скопировать

=ImportRange('_keys'!$B$2; 
    "2015!" & COL_NR2LETTER(Column(A1)) &"200:"& COL_NR2LETTER(Column(A1)) &"203") 

из столбца X в колонке Х + п.

1

Вы можете использовать функцию COLUMN(), чтобы получить столбец текущей ячейки в виде числа. Используя ADDRESS(), вы можете превратить его в строку ссылки на ячейку. См. Документы для COLUMN и ADDRESS.

Ваш код становится

=ImportRange('_keys'!$B$2; 
      CONCATENATE("2015!", ADDRESS(200, COLUMN()-Y, 4), 
         ":",  ADDRESS(203, COLUMN()-Y, 4)) 
      ) 

, где Y является смещение между колонки А и столбца X (где расположена эта формула). Третий аргумент ADDRESS делает как относительную строку и столбец (без $). Обратите внимание, что порядок аргументов ADDRESS равен row, затем column, досадно.

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

  • Нет связанных вопросов^_^