Новости:

Интересные и полезные статьи по работе с Excel и VBA
можно найти в разделе ХИТРОСТИ

Главное меню

Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.

Просмотр сообщений

Сообщения - Zavik21

#1
Всем привет!
Никак не могу решить задачу. В столбцах A-E вводятся значения. Одновременно в одной строке могут быть введены значения в нескольких столбцах, либо только в один, Нужно, чтобы в столбце F выводился анализ данных. По идее в столбцы A-E должны вводиться только числа, с которыми можно производить математические действия. Числа могут вводиться положительные, отрицательные, целые и с дробной частью. Дробная часть отделяется запятой "," Бывает такое, что пользователь вводит в ячейки что-то лишнее, например может быть 500! или 40" или 30е, или 50.54. В случае, если в ячейку вводится не числовое значение, формулы подсчитать данные естественно не могут. Раньше для проверки я использовал формулу =ЕЧИСЛО(), а сейчас появилась необходимость проверять это же самое, но только с помощью скрипта. Никак не могу написать реально рабочий скрипт, чтобы он проверял все непустые строки, столбцы A-E, по заданному критерию (пропуская пустые ячейки), и в случае, если в строке все найденные значения числовые, тогда выводил в столбец F текст "Все ок", а если есть хоть одна ячейка с нечисловым значением, выводил слово "Лишние символы". Значения с разделителем-точкой должны считаться "Лишние символы", а с запятой "Все ОК".
Пример скрипта, уже ИИ пробовал))) не получается. Значения с запятой как невалидные считает. Подскажите, пожалуйста как решить мою задачу! Благодарю!
function proverka() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const dataRange = sheet.getDataRange();
  const data = dataRange.getValues();

  const numericRegex = /^-?\d+(,\d+)?$/;

  for (let i = 0; i < data.length; i++) {
    const row = data[i];
    let isAllNumeric = true;

    for (let j = 0; j < 5; j++) {
      const cellValue = row[j];

      if (cellValue === "") continue;

      const cellString = cellValue.toString();

      if (!numericRegex.test(cellString)) {
        isAllNumeric = false;
        break;
      }
    }

    if (isAllNumeric) {
      sheet.getRange(i + 1, 6).setValue("Все ок");
    } else {
      sheet.getRange(i + 1, 6).setValue("Лишние символы");
    }
  }
}
#2
Всех приветствую!
Подскажите, пожалуйста!
Сразу прикреплю пример: https://docs.google.com/spreadsheets/d/1BXrGXJlqwyLjtbISv-H25hlbJUY1nTHUrrlHNCBKpqs/edit?usp=sharing
Суть такая: есть 2 столбца (столбец 1 и столбец 2).
Значения будут вставляться в столбец 1, в зависимости от того, что в столбце 2:
- Если в столбце 2 пусто, значит в этой же строке в столбце 1 тоже пусто;
- Если в столбце 2 в ячейке есть значение (и эта ячейка ни с чем не объединенная), то в столбец 1 вставляем значение равное значению в столбце 2;
- Если в столбце 2 несколько ячеек объединены, то во все соседствующие ячейки столбца 1 проставить значения из объединенной ячейки в столбце 2.
Не соображу как можно реализовать.
Благодарю!
#3
Всем привет! С новым годом! :)
подскажите пожалуйста, можно ли как-то в гугл таблицах реализовать следующее:
Имеем 5 листов:
1 лист - исходник формул
2 лист - расчеты
.....
4 лист - расчеты

То есть: на одном листе (1 лист) задать шаблон форматирования (если возможно и условное форматирование с проверкой данных). Например, в ячейке С1 стоит формула А1+B1

А в остальных листах уже используется эта формула для данных на своем листе. (то есть для листа 2 суммируются данные во листе 2 со своего листа, а не с 1-го)

Если проще, вся суть в том, что есть несколько листов с талмутом формул (формулы в каждом листе одинаковые)). Если необходимо внести какие-то коррективы в формулу, то нужно  на КАЖДОМ листе вносить эти изменения. А если бы каким-то образом можно было скопировать формулы (и форматирование желательно) из листа-исходника, то можно внести изменения всего в 1 листе, а остальные сами подхватят изменения
#5
Всех приветствую!
На просторах интернета нашел скрипт, который позволяет вставлять несколько значений в раскрывающийся список.
мой пример: https://docs.google.com/spreadsheets/d/1zi41XgnB9zox51l-kUzpIGD9hp8ewcOUtG1e481nf0g/edit?usp=sharing
смысл работы: если встать на ячейку С1-С10, нажимаем на SCRIPTS - Multi select..... появляется окно с выбором значений с чекбоксами, значения берутся из завязаных на проверке данных в ячейке С. При нажатии на кнопке Select выбранные значения вставляются в ячейку

Немного не подходит, подскажите пожалуйста как упростить этот скрипт:
чтобы жестко задан был диапазон ячеек, которые выходили бы с чекбоксами, при чем игнорировались бы пустые ячейки (в примере пустые значения тоже выходят)
, и при нажатии на select выбранные значения подставлялись бы не в ячейку, а в окно под вариантами (скрин прилагаю)

благодарю!
#6
Всем привет!
Ребят, подскажите пожалуйста!
Задача следующая:
Фильтрую данные по условиям. Есть 2 столбца. В одном - наименование, в другом - количество. На выходе нужно получить в одной ячейке массив следующего вида:
наименование1 - 4шт
наименование2 - 8шт
Файл с примером по ссылке: https://docs.google.com/spreadsheets/d/1d4Rl1_1W_eOhOflrYJdHtGO7dqaa7ygEP0j9CSONfsM/edit?usp=sharing
Результат планирую получить в строке 25 (в примере)
Спасибо!
#7
Доброго времени суток!

Имею файл эксель (прикрепил)
в ячейке А4 находится число. Если в ту же самую ячейку ввести еще одно число, при нажатии ДА оно суммируется с предыдущим числом, если НЕТ - значит в ячейке остается число, которое и было.

Подскажите пожалуйста, как сделать чтобы данное правило распространялось на столбец с А4 до А5000? (до конца столбца)


Спасибо.
Яндекс.Метрика Рейтинг@Mail.ru