ĐỐ VUI GOOGLE SHEETS KỲ 5

yeudoi

Thành viên gắn bó
Thành viên BQT
Moderator
Tham gia ngày
12 Tháng sáu 2006
Bài viết
2,840
Được thích
7,010
Điểm
910
Nơi ở
TP Hội An
Tiếp tục đố vui kỷ niệm 11 năm ngày thành lập diễn đàn GPE. Kỳ này BTC rất mong các bạn tham gia nhiều hơn nữa.
Nội dung câu đố như sau:
Chúng ta có một data danh sách nhân sự và số lượng có thể thay đổi cập nhật thêm. Nay lãnh đạo cần báo cáo danh sách nhân sự đó, nhưng để cho đẹp bảng báo cáo chúng ta thường làm thêm dòng tổng cộng vào cuối bảng cáo cáo. Nay mọi người làm giúp làm sao chèn dòng tổng cộng và đếm số lượng có trong danh sách ở dòng tổng cộng ( Chú ý danh sách thay đổi thì dòng tổng cũng phải thay đổi theo).
Mọi người xem trong file đính kèm nha.
Chúng mọi người tham gia vui vẻ và tìm được điều bổ ích cho mình.
 

quanluu1989

Thành viên gắn bó
Tham gia ngày
11 Tháng tư 2013
Bài viết
2,013
Được thích
1,111
Điểm
560
Nơi ở
Nam Định/Thái Nguyên
Tiếp tục đố vui kỷ niệm 11 năm ngày thành lập diễn đàn GPE. Kỳ này BTC rất mong các bạn tham gia nhiều hơn nữa.
Nội dung câu đố như sau:
Chúng ta có một data danh sách nhân sự và số lượng có thể thay đổi cập nhật thêm. Nay lãnh đạo cần báo cáo danh sách nhân sự đó, nhưng để cho đẹp bảng báo cáo chúng ta thường làm thêm dòng tổng cộng vào cuối bảng cáo cáo. Nay mọi người làm giúp làm sao chèn dòng tổng cộng và đếm số lượng có trong danh sách ở dòng tổng cộng ( Chú ý danh sách thay đổi thì dòng tổng cũng phải thay đổi theo).
Mọi người xem trong file đính kèm nha.
Chúng mọi người tham gia vui vẻ và tìm được điều bổ ích cho mình.
Mình tập tẹ script, bạn coi xem có được không?
Mã:
function test() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var countRow = lastValue("A");
  sheet.getRange("A:D").copyTo(sheet.getRange("F1"));
  sheet.getRange("G"+ (countRow + 1)).setValue("Tổng cộng");
  sheet.getRange("I"+ (countRow + 1)).setValue(countRow -1);
 }

function lastValue(column) {
  var lastRow = SpreadsheetApp.getActiveSheet().getMaxRows();
  var values = SpreadsheetApp.getActiveSheet().getRange(column + "1:" + column + lastRow).getValues();

  for (; values[lastRow - 1] == "" && lastRow > 0; lastRow--) {}
  return lastRow;
}
 

yeudoi

Thành viên gắn bó
Thành viên BQT
Moderator
Tham gia ngày
12 Tháng sáu 2006
Bài viết
2,840
Được thích
7,010
Điểm
910
Nơi ở
TP Hội An
Mình tập tẹ script, bạn coi xem có được không?
Mã:
function test() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var countRow = lastValue("A");
  sheet.getRange("A:D").copyTo(sheet.getRange("F1"));
  sheet.getRange("G"+ (countRow + 1)).setValue("Tổng cộng");
  sheet.getRange("I"+ (countRow + 1)).setValue(countRow -1);
 }

function lastValue(column) {
  var lastRow = SpreadsheetApp.getActiveSheet().getMaxRows();
  var values = SpreadsheetApp.getActiveSheet().getRange(column + "1:" + column + lastRow).getValues();

  for (; values[lastRow - 1] == "" && lastRow > 0; lastRow--) {}
  return lastRow;
}
Chỉ đúng về kết quả nhưng script chưa tối ưu nên chạy rất nặng Bạn nha.
 

quanluu1989

Thành viên gắn bó
Tham gia ngày
11 Tháng tư 2013
Bài viết
2,013
Được thích
1,111
Điểm
560
Nơi ở
Nam Định/Thái Nguyên

quanluu1989

Thành viên gắn bó
Tham gia ngày
11 Tháng tư 2013
Bài viết
2,013
Được thích
1,111
Điểm
560
Nơi ở
Nam Định/Thái Nguyên
Sao lại mẹo, trong này có gì mẹo đâu. Bạn kết hợp query với union nha
Ý mình là mẹo ở chỗ bạn kết hợp cả dữ liệu ở sheet2
còn trong gg sheet ko có union như kiểu:
Select A,B,C,D table1 unionall select '', 'tong cong', '', count(*) table1
 

yeudoi

Thành viên gắn bó
Thành viên BQT
Moderator
Tham gia ngày
12 Tháng sáu 2006
Bài viết
2,840
Được thích
7,010
Điểm
910
Nơi ở
TP Hội An
Ý mình là mẹo ở chỗ bạn kết hợp cả dữ liệu ở sheet2
còn trong gg sheet ko có union như kiểu:
Select A,B,C,D table1 unionall select '', 'tong cong', '', count(*) table1
Mình nghĩ cứ ra kết quả và đơn giản nhanh nhất là được. Còn kiểu kết hợp có lẽ được nhưng nghĩ chưa ra Bạn
 
Top Bottom