[Help] – Chuyển Cột Sang Hàng (bỏ ô trống) (ok)

https://hocggsheet.com/chuyen-cot-sang-hang-bo-o-trong/

Cách 1:

function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var nguon = ss.getSheetByName("sheet0");
  var dich = ss.getSheetByName("sheet1");
  var nguonRange = nguon.getRange(1,1,nguon.getLastRow());
  var j = 3;
  for (var i = 1; i<=50; i++) {
    var giatri = nguon.getRange(i, 1).getValue();
    if (giatri != "") {
      dich.getRange(7, j).setValue(giatri);
      j++;
    }
  }
}

Cách 2:

function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var nguon = ss.getSheetByName("sheet0");
  var dich = ss.getSheetByName("sheet1");
  var nguonRange = nguon.getRange(1,1,nguon.getLastRow());  
  var j = 0;
  var dichR = [];
  var nguonValue = nguonRange.getValues();
  for (var i = 0; i < nguonValue.length; i++) {
    if (nguonValue[i] != "") {
      dichR[j] = nguonValue[i][0];
      j++;
    }
  }
  console.log(dichR); // [ 1, 1, 2, 2, 44 ]
  nguon.getRange(7, 3, 1, dichR.length).setValues([dichR]);
  dich.getRange(7, 1, 1, dichR.length).setValues([dichR]);
}

Video hướng dẫn

Có 2 cách dễ nhất để chúng ta chuyển đổi từ hàng sang cột (bỏ ô trống).

Cách 1

Sử dụng vòng lặp For với ý tưởng là kiểm tra từng ô trong dải. Nếu ô Có dữ liệu (không bỏ trống) thì ghi ô đó vào Ô đích đến.

  • Ưu: dễ làm, dễ nghĩ, dễ thực hiện

  • Nhược: không dùng được với dải ô có nhiều ô vì khi kết hợp vòng lặp For và getRange(), getValue(), và setValue() thì chương trình sẽ thực thi một lượng lớn câu lệnh. Dẫn đến quá tải và bị chậm.

Để sử dụng cách 1 trong code trên, hãy xóa các dấu // ở đầu dòng các câu lệnh trong cách 1, đồng thời xóa cách 2 đi. Vì code trên chỉ thực hiện được 1 trong 2 cách một lúc mà thôi.

Cách 2

Các bước thực hiện như sau:

  1. Sử dụng getValues() để ghi hết giá trị của dải ô muốn chuyển vào 1 mảng riêng biệt

  2. Kiểm tra và lấy các phần tử Khác rỗng trong mảng đó, rồi tách thành 1 mảng riêng biệt thứ 2

  3. Cuối cùng, ghi mảng thứ 2 vào dải ô đích đến.

Code

0123456789101112131415161718192021222324252627282930

function hocggsheet() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var nguon = ss.getSheetByName("Nguon"); var dich = ss.getSheetByName("Dich"); var nguonRange = nguon.getRange(1,1,nguon.getLastRow()); /* Cach 1 */// var j = 3;// for (var i = 1; i<=500; i++) {// var giatri = nguon.getRange(i, 1).getValue();// if (giatri != "") {// nguon.getRange(7, j).setValue(giatri);// j++;// }// } /* Cach 2 */ var j = 0; var dichR = []; var nguonValue = nguonRange.getValues(); for (var i = 0; i < nguonValue.length; i++) { if (nguonValue[i] != "") { dichR[j] = nguonValue[i][0]; j++; } } nguon.getRange(7, 3, 1, dichR.length).setValues([dichR]); /* Nếu muốn copy qua sheet Dich: */ dich.getRange(7, 1, 1, dichR.length).setValues([dichR]);}

Xem file (google sheet) chia sẻ

Bài này nhằm giải quyết câu hỏi của 1 bạn đã gửi về cho hocggsheet.com

Nếu có thắc mắc nào về code thì bạn có thể gửi câu hỏi vào form sau, nếu có thể thì mình sẽ dành thời gian để trả lời.

https://goo.gl/forms/L6CDeDwjwQ09X0OO2

Last updated

Navigation

Lionel

@Copyright 2023