ฉันมีสเปรดชีตที่มีคนอื่นป้อนข้อมูล พวกมันออกจากเซลล์ว่างแทนที่จะบันทึก 0 ค่า ฉันจะแทนที่เซลล์ว่างด้วย 0s ได้อย่างไร
ฉันลองค้นหาและแทนที่ด้วยนิพจน์ทั่วไปโดยใช้ ^ $ แต่ไม่ได้ผล
ฉันมีสเปรดชีตที่มีคนอื่นป้อนข้อมูล พวกมันออกจากเซลล์ว่างแทนที่จะบันทึก 0 ค่า ฉันจะแทนที่เซลล์ว่างด้วย 0s ได้อย่างไร
ฉันลองค้นหาและแทนที่ด้วยนิพจน์ทั่วไปโดยใช้ ^ $ แต่ไม่ได้ผล
คำตอบ:
ฉันคิดว่าคุณเพียงต้องการทำสิ่งนี้ในบางส่วนของสเปรดชีตและนั่นเป็นปัญหาแบบครั้งเดียวที่คุณต้องแก้ไขไม่ใช่สิ่งที่คุณต้องทำซ้ำ
สำหรับเรื่องนี้เป็นวิธีที่ง่ายที่สุดคือการหาพื้นที่อื่นรูปร่างและขนาดเดียวกัน (บางทีในแผ่นงานอื่น) และไม่ได้ใช้อยู่ในปัจจุบัน
ในแต่ละเซลล์ในพื้นที่นั้นตั้งกระดานสนทนาเป็นแบบนี้ (ขึ้นอยู่กับเซลล์ที่คุณใช้):
= ถ้า (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;
});
}));
}
เมื่อเปิดไฟล์รายการเมนูที่ชื่อว่า Zeros จะถูกสร้างขึ้นโดยมีสี่รายการย่อย หากคุณต้องการเรียกใช้ฟังก์ชั่นแบบแมนนวลเมื่อเปิดเช่นกันให้เพิ่มมันเข้าไปโดย:
ฉันได้สร้างไฟล์ตัวอย่างสำหรับคุณ: แทนที่เซลล์ว่างด้วยศูนย์
1. สร้างสำเนาของแฟ้มหรือวางโค้ดภายใต้เครื่องมือ> แก้ไขสคริปต์ 2. กดปุ่มนาฬิกาข้อผิดพลาดเพื่อตรวจสอบสคริปต์
3. เปิดเอกสารของคุณใหม่ตอนนี้คุณมีเมนูใหม่!
สำหรับจำนวนที่ จำกัด 0
ของคอลัมน์ที่คุณอาจกรองเพื่อเลือกช่องว่างแล้วใส่และคัดลอกลง
วิธีหนึ่งที่ทำงานได้ดีสำหรับฉันในสถานการณ์ที่คล้ายกันใน Google สเปรดชีตคือการ SUM คอลัมน์ว่างด้วย 0 และเก็บผลลัพธ์ไว้ในคอลัมน์ใหม่
หากคอลัมน์A
มีเซลล์ว่างที่คุณต้องการแทนที่และสมมติว่าคุณมีข้อมูลอยู่B
ให้ใช้คอลัมน์ว่างถัดไปC
เพื่อเก็บค่าที่อัปเดตดังนี้:
C1=SUM(A1, 0)
C
และสำหรับคอลัมน์ทั้งหมด
ในกรณีของฉันฉันต้องคูณค่าและเซลล์ว่างทำงานเหมือน1
s แทนที่จะ0
เป็นPRODUCT()
ดังนั้นฉันจึง:
=PRODUCT(SUM(A,0), multiplier)
A
ซึ่งทำให้ผมคาดว่าผลการค้นหาสำหรับเซลล์ว่างหรือหมายเลขที่ไม่ใช่ใน
ฉันมีข้อมูลขนาดใหญ่ที่มีช่องว่างอยู่ภายในแบบสุ่มดังนั้นการใช้if(isblank())
จึงเป็นความคิดที่ไม่ดีสำหรับฉันเพราะจะต้องใช้แรงงานมากเป็นพิเศษ
แต่ฉันดาวน์โหลดแผ่นงานเป็น csv และเปิดใน TextWrangler (โปรแกรมแก้ไขข้อความใด ๆ ที่ค้นหาและแทนที่จะทำงานได้) จากนั้นฉันก็พบ ',,' และแทนที่ด้วย ', 0,' ฉันต้องทำสองครั้ง จากนั้นเมื่อฉันนำเข้าอีกครั้งฉันจะใช้if(isblank())
เฉพาะในคอลัมน์แรกและคอลัมน์สุดท้ายของชุดข้อมูลของฉัน ทุกอย่างอื่นถูก zeroed out ใช้เวลาประมาณ 5-10 นาทีเท่านั้น
คุณสามารถใช้"ค้นหาและแทนที่" ( Ctrl+ F→ตัวเลือกเพิ่มเติม)
^$