Jak mogę zastąpić puste komórki zerami w arkuszu kalkulacyjnym Google?
13
Mam arkusz kalkulacyjny, w którym ktoś inny wprowadził dane. Pozostawili puste komórki zamiast rejestrować 0 wartości. Jak mogę zastąpić puste komórki zerami?
Próbowałem znaleźć i zastąpić wyrażeniami regularnymi przy użyciu ^ $, ale to nie działało.
Zakładam, że chcesz to zrobić tylko w określonej części arkusza kalkulacyjnego i że jest to jednorazowy problem, który musisz naprawić, a nie coś, co musisz powtórzyć.
W tym celu najprostszym podejściem jest znalezienie innego obszaru o tym samym kształcie i rozmiarze (być może w innym arkuszu), a obecnie nieużywanego .
W każdej komórce w tym obszarze ustaw forumula na coś takiego (w zależności od używanych komórek):
= if (isblank (A3), „0”, A3)
Wybierz dane z 2. obszaru, skopiuj je i wklej z powrotem do oryginału za pomocą Edycja> Wklej specjalnie> Wklej tylko wartości
Konieczne może być ponowne zastosowanie niektórych formatowań (np. Formatów daty), ale wartości tam będą.
To działa cudownie. Miałem mały problem z użyciem polecenia SMALL w wyniku. Byłem w stanie to naprawić za pomocą = if (isblank (A3), 0, A3) Zamiast tego.
W mojej sytuacji była to najlepsza odpowiedź. Miałem dwa zakresy komórek, które musiały mieć wartości, ale były puste. Wypełniłem niektóre komórki wartościami, jeśli dane były dla nich dostępne. Potem chciałem, aby wszystkie pozostałe puste komórki były wypełnione zerą, aby wskazać, że już rozważałem te komórki.
Poniższy skrypt doda 0każdą pustą komórkę w zakresie.
Kod
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;
});
}));
}
Uwaga
Po otwarciu pliku tworzony jest element menu o nazwie Zeros, zawierający cztery elementy podrzędne. Jeśli chcesz uruchomić funkcję ręczną również podczas otwierania, po prostu dodaj ją w następujący sposób:
Przykład
Utworzyłem dla Ciebie przykładowy plik: Zastąp pustą komórkę zerami .
1. Utwórz kopię pliku lub wklej kod w Narzędzia> Edytor skryptów . 2. Naciśnij przycisk błędu zegara, aby uwierzytelnić skrypt.
3. Otwórz ponownie dokument, teraz masz nowe menu!
Jednym ze sposobów, który działał dla mnie w podobnych sytuacjach w arkuszach kalkulacyjnych Google, było Zsumowanie pustej kolumny z 0 i zapisanie wyniku w nowej kolumnie.
Jeśli kolumna Azawiera puste komórki, które chcesz zastąpić i, powiedzmy, masz dane B, użyj następnej pustej kolumny, Caby zapisać zaktualizowane wartości w następujący sposób:
C1=SUM(A1, 0)
i tak dalej dla całej kolumny C.
W moim przypadku musiałem pomnożyć wartości, a puste komórki działały jak 1s zamiast 0s PRODUCT(), więc zrobiłem:
=PRODUCT(SUM(A,0), multiplier)
co dało mi oczekiwane wyniki dla pustych lub nieliczbowych komórek w A.
Miałem ogromne dane z pustymi miejscami losowymi, więc używanie if(isblank())było dla mnie złym pomysłem, ponieważ byłoby bardzo pracochłonne.
Zamiast tego pobrałem mój arkusz jako plik csv i otworzyłem go w TextWrangler (dowolny edytor tekstowy z funkcją Znajdź i zamień będzie działał). Potem znalazłem „,,” i zastąpiłem „, 0,”. Musiałem to zrobić dwa razy. Następnie, kiedy ponownie zaimportowałem, użyłem if(isblank())tylko pierwszej i ostatniej kolumny mojego zestawu danych. Wszystko inne zostało wyzerowane. Zajęło to tylko około 5-10 minut.
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.