@as_vasch

Как получить адрес нужной мне ячейки в буквенном формате?

Раз в несколько дней, я отправляю лист в архив, создавая новый чистый лист с таблицей. Все это делается скриптом. Но иногда мне нужно изменить количество столбцов, из за этого скрипт работает не корректно. Я хочу сделать привязку к определенной ячейке, найти ее решил таким способом:

function find (){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[1];
  
  var range = sheet.getRange(2, 1, 1,40);
  var values = range.getValues();
  
   for (var row in values) {
    for (var col in values[row]) {
      Logger.log(values[row][col]);
    }
  }
}

Там где логгер, хочу сделать проверку на нужное мне значение. И после этого, не знаю как получить адрес. Например "AF4".
Возможно я выдумываю какую то ерунду, и это можно сделать гораздо легче.
  • Вопрос задан
  • 254 просмотра
Решения вопроса 3
oshliaer
@oshliaer Куратор тега Google Apps Script
Google Products Expert
Ответ выше неполный и может привести к проблемам при массовой обработке данных. ChatGPT точно такого не сделает, потому что не знает, а пользователь не может сформулировать.

Способ первый, это вычисление имени колонки по номеру колонки

function base26ABCfrom10_(number) {
  let num = number;
  let sfx = '';
  while (num > 0) {
    const cd = (num - 1) % 26;
    sfx = String.fromCharCode(65 + cd) + sfx;
    num = Math.floor((num - cd) / 26);
  }
  return sfx;
}


Второй способ, это получение координат диапазона. Этот метод как раз может быть с тормозами

6666fe9535aa8106659507.png

Пример в Таблице https://docs.google.com/spreadsheets/d/11zQ949jIwe...
Ответ написан
BasiC2k
@BasiC2k
.NET developer (open to job offers)
Чтобы получить A1-адрес ячейки, вы можете использовать метод getA1Notation() объекта Range. Этот метод возвращает строку, представляющую адрес в формате A1. Вот пример скрипта, который демонстрирует, как это сделать:
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  
  // Получить активную ячейку
  var range = sheet.getActiveCell();
  
  // Получить A1-адрес этой ячейки
  var a1Address = range.getA1Notation();
  
  // Вывести A1-адрес в лог
  Logger.log('A1 address of the active cell is: ' + a1Address);


PS Народ, осваивайте ChatGPT! Ответы на множество вопросов за минуту.
Ответ написан
@Alex400
Я бы вот так искал:
function myFunction() {
  const s = SpreadsheetApp.getActiveSpreadsheet()
  const range = s.getSheetByName('Лист1').getDataRange();
  const next= range.createTextFinder('dog').findNext();
  const rez = next.getA1Notation()
  Logger.log(rez)
   }


Ищу значение == dog
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы