ฉันจะแทนที่เซลล์ว่างด้วยศูนย์ใน Google Spreadsheet ได้อย่างไร


13

ฉันมีสเปรดชีตที่มีคนอื่นป้อนข้อมูล พวกมันออกจากเซลล์ว่างแทนที่จะบันทึก 0 ค่า ฉันจะแทนที่เซลล์ว่างด้วย 0s ได้อย่างไร

ฉันลองค้นหาและแทนที่ด้วยนิพจน์ทั่วไปโดยใช้ ^ $ แต่ไม่ได้ผล


1
ที่เกี่ยวข้อง
อเล็กซ์

คุณหาเวลาทบทวนคำตอบที่ได้รับบ้างหรือไม่?
จาค็อบ ม.ค. Tuinstra

คำตอบ:


12

ฉันคิดว่าคุณเพียงต้องการทำสิ่งนี้ในบางส่วนของสเปรดชีตและนั่นเป็นปัญหาแบบครั้งเดียวที่คุณต้องแก้ไขไม่ใช่สิ่งที่คุณต้องทำซ้ำ

สำหรับเรื่องนี้เป็นวิธีที่ง่ายที่สุดคือการหาพื้นที่อื่นรูปร่างและขนาดเดียวกัน (บางทีในแผ่นงานอื่น) และไม่ได้ใช้อยู่ในปัจจุบัน

ในแต่ละเซลล์ในพื้นที่นั้นตั้งกระดานสนทนาเป็นแบบนี้ (ขึ้นอยู่กับเซลล์ที่คุณใช้):

= ถ้า (ISBLANK (A3), "0" A3)

เลือกข้อมูลจากพื้นที่ที่ 2 คัดลอกและวางกลับไปที่ต้นฉบับโดยใช้แก้ไข> วางแบบพิเศษ> วางค่าเท่านั้น

คุณอาจจำเป็นต้องใช้การจัดรูปแบบบางอย่าง (เช่นรูปแบบวันที่) อีกครั้ง แต่ค่าจะอยู่ที่นั่น

fyi ฉันได้ยกตัวอย่างการทำงานของวิธีการนี้ที่นี่: https://docs.google.com/spreadsheets/d/1T6owfGtpKt3NLl5hq1AZpeWA1ILWUwBQ44bdlAmekF0/edit?usp=sharing


2
มันใช้งานได้ดีอย่างน่าอัศจรรย์ ฉันมีปัญหาเล็กน้อยกับการใช้คำสั่ง SMALL ในผลลัพธ์ ฉันสามารถแก้ไขได้โดยใช้ = if (isblank (A3), 0, A3) แทน
Joe Manlove

9

ใช้นิพจน์ปกติในค้นหาและแทนที่ :

^\s*$

Google สเปรดชีตแทนที่ว่างด้วย 0


สำหรับสถานการณ์ของฉันนี่คือคำตอบที่ดีที่สุด ฉันมีเซลล์สองช่วงที่จำเป็นต้องมีค่า แต่ว่างเปล่า ฉันเติมบางเซลล์ด้วยค่าถ้าข้อมูลพร้อมใช้งานสำหรับพวกเขา จากนั้นฉันต้องการให้เซลล์ว่างอื่น ๆ ทั้งหมดเต็มไปด้วยศูนย์เพื่อระบุว่าฉันได้พิจารณาเซลล์เหล่านั้นแล้ว
LS

ขอบคุณนี้มีประโยชน์
lathomas64

8

สคริปต์ต่อไปนี้จะเพิ่ม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. เปิดเอกสารของคุณใหม่ตอนนี้คุณมีเมนูใหม่! ป้อนคำอธิบายรูปภาพที่นี่


ทำงานเหมือนจับใจ อย่างน้อยในเวอร์ชันล่าสุดคุณจำเป็นต้องเพิ่มลงในมาโครเพื่อเรียกใช้งาน
Nic Szerman

2

สำหรับจำนวนที่ จำกัด 0ของคอลัมน์ที่คุณอาจกรองเพื่อเลือกช่องว่างแล้วใส่และคัดลอกลง


2

วิธีหนึ่งที่ทำงานได้ดีสำหรับฉันในสถานการณ์ที่คล้ายกันใน Google สเปรดชีตคือการ SUM คอลัมน์ว่างด้วย 0 และเก็บผลลัพธ์ไว้ในคอลัมน์ใหม่

หากคอลัมน์Aมีเซลล์ว่างที่คุณต้องการแทนที่และสมมติว่าคุณมีข้อมูลอยู่Bให้ใช้คอลัมน์ว่างถัดไปCเพื่อเก็บค่าที่อัปเดตดังนี้:

C1=SUM(A1, 0)Cและสำหรับคอลัมน์ทั้งหมด

ในกรณีของฉันฉันต้องคูณค่าและเซลล์ว่างทำงานเหมือน1s แทนที่จะ0เป็นPRODUCT()ดังนั้นฉันจึง:

=PRODUCT(SUM(A,0), multiplier)

Aซึ่งทำให้ผมคาดว่าผลการค้นหาสำหรับเซลล์ว่างหรือหมายเลขที่ไม่ใช่ใน


1

ฉันมีข้อมูลขนาดใหญ่ที่มีช่องว่างอยู่ภายในแบบสุ่มดังนั้นการใช้if(isblank())จึงเป็นความคิดที่ไม่ดีสำหรับฉันเพราะจะต้องใช้แรงงานมากเป็นพิเศษ

แต่ฉันดาวน์โหลดแผ่นงานเป็น csv และเปิดใน TextWrangler (โปรแกรมแก้ไขข้อความใด ๆ ที่ค้นหาและแทนที่จะทำงานได้) จากนั้นฉันก็พบ ',,' และแทนที่ด้วย ', 0,' ฉันต้องทำสองครั้ง จากนั้นเมื่อฉันนำเข้าอีกครั้งฉันจะใช้if(isblank())เฉพาะในคอลัมน์แรกและคอลัมน์สุดท้ายของชุดข้อมูลของฉัน ทุกอย่างอื่นถูก zeroed out ใช้เวลาประมาณ 5-10 นาทีเท่านั้น


1

คุณสามารถใช้"ค้นหาและแทนที่" ( Ctrl+ F→ตัวเลือกเพิ่มเติม)

  • หา: ^$
  • แทนที่ด้วย: 0
  • ค้นหา: ช่วงของคุณ
  • เลือก: ค้นหาโดยใช้นิพจน์ทั่วไป

1
-1 คำถามระบุอย่างชัดเจนว่าสิ่งนี้ไม่ได้ผลสำหรับผู้ถาม
msh210
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.