У мене є електронна таблиця, куди хтось ще ввів дані. Вони залишили порожні клітинки замість запису 0 значень. Як можна замінити порожні комірки на 0?
Я спробував знайти та замінити регулярні вирази, використовуючи ^ $, але це не вийшло.
У мене є електронна таблиця, куди хтось ще ввів дані. Вони залишили порожні клітинки замість запису 0 значень. Як можна замінити порожні комірки на 0?
Я спробував знайти та замінити регулярні вирази, використовуючи ^ $, але це не вийшло.
Відповіді:
Я припускаю, що ви хочете зробити це лише в певній частині електронної таблиці, і що це одноразова проблема, яку потрібно виправити, а не те, що потрібно повторювати.
Для цього найпростішим підходом є пошук іншої області такої ж форми та розміру (можливо, в іншому робочому аркуші), яка наразі не використовується .
У кожній комірці в цій області встановіть форуму щось подібне (залежно від осередків, які ви використовуєте):
= if (isblank (A3), "0", A3)
Виберіть дані з 2-ї області, скопіюйте їх і вставте їх до оригіналу, використовуючи Правка> Спеціальна вставка> Лише значення вставки.
Можливо, вам доведеться повторно застосувати деякі формати (наприклад, формати дати), але значення будуть там.
fyi, я приклав тут спрацьований приклад такого підходу: https://docs.google.com/spreadsheets/d/1T6owfGtpKt3NLl5hq1AZpeWA1ILWUwBQ44bdlAmekF0/edit?usp=sharing
Наступний сценарій додасть 0
до кожної порожньої комірки в діапазоні.
function onOpen() {
SpreadsheetApp.getUi().createMenu("Zeros")
.addItem("Sheet", "zeroSheet")
.addItem("Data range", "zeroDatarange")
.addItem("Selection", "zeroSelection")
.addItem("Manual Override", "zeroManual")
.addToUi();
}
function zeroSheet() {
var sheet = SpreadsheetApp.getActiveSheet();
zero(sheet, 'sheet');
}
function zeroDatarange() {
var range = SpreadsheetApp.getActiveSheet().getDataRange();
zero(range, 'datarange');
}
function zeroSelection() {
var range = SpreadsheetApp.getActiveSheet().getActiveRange();
zero(range, 'activerange');
}
function zeroManual() {
var spreadsheet = SpreadsheetApp.getActive();
zero(spreadsheet, 'manual');
}
function zero(source, type) {
var data, range;
switch(type) {
case 'sheet':
var lastRow = source.getMaxRows();
var lastColumn = source.getMaxColumns();
range = source.getRange(1, 1, lastRow, lastColumn);
break;
case 'manual':
range = source.getSheetByName('Sheetname').getRange(2, 4, 3, 6);
break;
case 'datarange':
case 'activerange':
range = source;
break;
}
data = range.getValues();
range.setValues( data.map( function(row) {
return row.map( function(cell) {
return !cell ? 0 : cell;
});
}));
}
Коли файл відкривається, створюється пункт меню під назвою Нулі, який містить чотири підпункти. Якщо ви також бажаєте запустити функцію вручну після відкриття, просто додайте її так:
Я створив для вас прикладний файл: Замініть порожню клітинку нулями .
1. Створіть копію файлу або вставте код у меню Інструменти> Редактор сценаріїв . 2. Натисніть кнопку помилки годинника, щоб підтвердити сценарій.
3. Повторно відкрийте документ, тепер у вас є нове меню!
Один із способів, який працював на мене у подібних ситуаціях на електронних таблицях Google, - підсумувати порожній стовпець із 0 та зберегти результат у новому стовпчику.
Якщо у стовпці A
є порожні комірки, які ви хочете замінити, і, скажімо, у вас є дані B
, використовуйте наступний порожній стовпець C
для збереження оновлених значень на зразок:
C1=SUM(A1, 0)
і так далі для всієї колонки C
.
У моєму випадку мені потрібно було помножити значення, і порожні комірки працювали як 1
s замість 0
s PRODUCT()
, так що я зробив:
=PRODUCT(SUM(A,0), multiplier)
що дало мені очікувані результати для порожніх або нечислових комірок у A
.
У мене було величезна кількість даних із заготовками, випадково встановленими всередині неї, тому використання if(isblank())
було поганою ідеєю для мене, оскільки це було б дуже трудомістко.
Натомість я скачав свій аркуш як csv і відкрив його в TextWrangler (будь-який текстовий редактор з пошуку та заміни буде працювати). Потім я знайшов ",," і замінив на ", 0". Мені довелося це робити двічі. Потім, коли я повторно імпортував, я використовував if(isblank())
лише перший та останній стовпці мого набору даних. Все інше було нульовим. Всього зайняло близько 5-10 хвилин.
Ви можете використовувати "Знайти та замінити" ( Ctrl+ F→ Додаткові параметри).
^$