Lấy dữ liệu cột cuối cùng trong google sheet theo điều kiện

Liên hệ QC

d1207t

Thành viên mới
Tham gia
24/11/11
Bài viết
40
Được thích
6
Kính gửi: Các anh chị trong diễn đàn.
Em có một vấn đề nhỏ cần nhờ mọn người giúp đỡ ạ.
Em có 1 file google sheet bao gồm 3 cột. Cột A thời gian chấm công, cột C là người chấm công.
Theo google scrip thì tìm dòng cuối cùng có dữ liệu sẽ là:
value_cot_A = SpreadsheetApp.getActiveSheet().getRange("A"+lastrow).getValue()
Nhưng em muốn tìm user1, user2, user3 ở cột C thì có dòng cuối cùng chấm công ở cột A có giá trị bao nhiêu thì dùng lệnh ntn ạ?
Như trong file user1 dòng A sẽ ra giá trị 27/10/2022 11:58:20 AM
user2 giá trị trả về 27/10/2022 7:27:13 AM
user3 giá trị trả về 26/10/2022 5:14:33 PM
Như vậy tức là em muốn tìm dữ liệu cuối cùng của dòng A theo điều kiện cột C ạ
Rất mong mọi người giúp đỡ ạ
Em xin gửi link: https://docs.google.com/spreadsheets/d/1EgieAU93y60R4tSx5UuGwL0KloQjRXyNrthFrcJAVnY/edit?usp=sharing
 
Lần chỉnh sửa cuối:
Mình có phân biệt được dòng/ cột không?

Google Sheets thì gửi link Google Sheets, không gửi tập tin Excel.
Em đã chỉnh lại ạ
Dạ em xin câu lệnh để lấy giá trị cuối cùng của cột A, ứng với giá trị cuối cùng của user của cột C ạ
Tức là khi truy vấn 1 user nào đó thì mình biết được lần chấm công cuối cùng là lúc nào ạ
 
Lần chỉnh sửa cuối:
Rồi chốt lại là đang hỏi công thức hay hỏi Script nhỉ? Rồi kết quả ghi vào đâu cũng chưa nói luôn?
Theo cách hiểu của tôi thì dùng hàm maxifs. Kết quả đã làm vào cột D rồi đấy
em xin google scrip ạ. Sau khi truy vấn theo 1 user cụ thể thì ghi ra logger thôi ạ,
Bài đã được tự động gộp:

function Kiem_tra() {
let ss = SpreadsheetApp.openById("1EgieAU93y60R4tSx5UuGwL0KloQjRXyNrthFrcJAVnY")
let as = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1")
value_cuoi_A = SpreadsheetApp.getActiveSheet().getRange("A"+lastrow).getValue() \\ lấy giá trị dòng cuối cùng cột A
\\ Lấy giá trị dòng cuối cùng cột A ứng với dòng cuối cùng cột C với user2 -> câu lệnh là gì ạ?
Logger.log(value_cuoi_A)
}
 
Lần chỉnh sửa cuối:
em xin google scrip ạ. Sau khi truy vấn theo 1 user cụ thể thì ghi ra logger thôi ạ,
Bài đã được tự động gộp:

function Kiem_tra() {
let ss = SpreadsheetApp.openById("1EgieAU93y60R4tSx5UuGwL0KloQjRXyNrthFrcJAVnY")
let as = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1")
value_cuoi_A = SpreadsheetApp.getActiveSheet().getRange("A"+lastrow).getValue() \\ lấy giá trị dòng cuối cùng cột A
\\ Lấy giá trị dòng cuối cùng cột A ứng với dòng cuối cùng cột C với user2 -> câu lệnh là gì ạ?
Logger.log(value_cuoi_A)
}
Không biết phải vậy không?
JavaScript:
function myFunction() {
  let sh = SpreadsheetApp.getActive().getActiveSheet()
  let lr = sh.getLastRow()
  let ar = sh.getRange("A2:C" + lr).getValues()
  let dic = {}
 
  for (let i=0;i<ar.length;i++){
    let key = ar[i][2]
    let value = new Date(ar[i][0])
    let mykeys = Object.keys(dic)
    if (mykeys.includes(key)){
      if (value > dic[key]){dic[key] = value}
    } else {
      dic[key] = value
    };
  };
  Logger.log(dic)
}
 
Không biết phải vậy không?
JavaScript:
function myFunction() {
  let sh = SpreadsheetApp.getActive().getActiveSheet()
  let lr = sh.getLastRow()
  let ar = sh.getRange("A2:C" + lr).getValues()
  let dic = {}
 
  for (let i=0;i<ar.length;i++){
    let key = ar[i][2]
    let value = new Date(ar[i][0])
    let mykeys = Object.keys(dic)
    if (mykeys.includes(key)){
      if (value > dic[key]){dic[key] = value}
    } else {
      dic[key] = value
    };
  };
  Logger.log(dic)
}
Cảm ơn bác nhiều ạ.
Nhờ code của bác e đã làm được theo user cụ thể ạ
 
Lần chỉnh sửa cuối:
Không biết phải vậy không?
JavaScript:
function myFunction() {
  let sh = SpreadsheetApp.getActive().getActiveSheet()
  let lr = sh.getLastRow()
  let ar = sh.getRange("A2:C" + lr).getValues()
  let dic = {}
 
  for (let i=0;i<ar.length;i++){
    let key = ar[i][2]
    let value = new Date(ar[i][0])
    let mykeys = Object.keys(dic)
    if (mykeys.includes(key)){
      if (value > dic[key]){dic[key] = value}
    } else {
      dic[key] = value
    };
  };
  Logger.log(dic)
}
Bác có thể giúp e code lấy dữ liệu dòng cuối cột A cho user3 không ạ, Em làm nhưng vẫn bị lỗi ạ.
 
Bác có thể giúp e code lấy dữ liệu dòng cuối cột A cho user3 không ạ, Em làm nhưng vẫn bị lỗi ạ.
Thử code này xem sao:
JavaScript:
function myFunction2(){
  let sh = SpreadsheetApp.getActive().getActiveSheet()
  let lr = sh.getLastRow()
  let ar = sh.getRange("A2:C" + lr).getValues()
  let myuser = "user3"
  let datetime = new Date(0)
  for (let i=0;i<ar.length;i++){
    let user = ar[i][2].toLowerCase()
    let userDate = ar[i][0]
    if (myuser == user){
      if (datetime<userDate){
        datetime = userDate
      }
    }
  }
  Logger.log(datetime)
}
 
Thử code này xem sao:
JavaScript:
function myFunction2(){
  let sh = SpreadsheetApp.getActive().getActiveSheet()
  let lr = sh.getLastRow()
  let ar = sh.getRange("A2:C" + lr).getValues()
  let myuser = "user3"
  let datetime = new Date(0)
  for (let i=0;i<ar.length;i++){
    let user = ar[i][2].toLowerCase()
    let userDate = ar[i][0]
    if (myuser == user){
      if (datetime<userDate){
        datetime = userDate
      }
    }
  }
  Logger.log(datetime)
}
Tuyệt ạ! đã đúng với yêu cầu. Em cảm ơn bác nhiều ạ!
 
Không biết phải vậy không?
JavaScript:
function myFunction() {
  let sh = SpreadsheetApp.getActive().getActiveSheet()
  let lr = sh.getLastRow()
  let ar = sh.getRange("A2:C" + lr).getValues()
  let dic = {}
 
  for (let i=0;i<ar.length;i++){
    let key = ar[i][2]
    let value = new Date(ar[i][0])
    let mykeys = Object.keys(dic)
    if (mykeys.includes(key)){
      if (value > dic[key]){dic[key] = value}
    } else {
      dic[key] = value
    };
  };
  Logger.log(dic)
}
bác link nào hướng dẫn cơ bản lập trình dạng VBA Macro trên google sheet chỉ em với ạ.
 
Web KT
Back
Top Bottom