Xin hướng dẫn để nhập ký tự thì kết quả ra số ?

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

ngankvn

Thành viên mới
Tham gia
20/9/11
Bài viết
4
Được thích
0
Chào các bạn, mình đang kinh doanh nên cuối ngày sẽ kiểm kho, cụ thể là đếm số lượng nước ngọt của quán
Khi đếm sẽ ghi vào sổ kiểu : 5T3L5C, nghĩa là 5 thùng, 3 lốc, 5 chai
Khi nhập vào Google Spreadsheets thì mình sẽ phải nhập như vầy : =5*24+3*6+5 để kết quả là 143 chai


Mình muốn được tiện lợi hơn : nhập thẳng 5T3L5C và nó tự ra kết quả 143 chai, có cách để làm điều đó không ? Mong các bạn hướng dẫn mình ạ !!


 
Lần chỉnh sửa cuối:
Bạn có thể sử dụng một hàm tùy chỉnh trong Google Spreadsheets để chuyển đổi định dạng 5T3L5C thành số lượng chai. Hàm này sẽ tách chuỗi thành các phần tử và nhân với số lượng tương ứng của mỗi đơn vị. Sau đó, hàm này sẽ cộng tất cả các phần tử lại để ra kết quả cuối cùng.

Đây là mã của hàm tùy chỉnh:
Mã:
function countBottles(input) {
  // Khai báo các biến
  var result = 0; // Kết quả
  var unit = 0; // Đơn vị hiện tại
  var value = 0; // Giá trị hiện tại
  var multiplier = 0; // Hệ số nhân của mỗi đơn vị
  var units = ["T", "L", "C"]; // Các đơn vị có thể có
  var multipliers = [24, 6, 1]; // Các hệ số nhân tương ứng

  // Duyệt qua từng ký tự của chuỗi đầu vào
  for (var i = 0; i < input.length; i++) {
    var char = input.charAt(i); // Lấy ký tự hiện tại
    // Nếu ký tự là một số
    if (!isNaN(char)) {
      value = value * 10 + parseInt(char); // Cập nhật giá trị hiện tại
    }
    // Nếu ký tự là một chữ cái
    else {
      // Tìm đơn vị tương ứng với ký tự
      unit = units.indexOf(char.toUpperCase());
      // Nếu đơn vị hợp lệ
      if (unit != -1) {
        multiplier = multipliers[unit]; // Lấy hệ số nhân
        result += value * multiplier; // Cộng vào kết quả
        value = 0; // Đặt lại giá trị
      }
      // Nếu đơn vị không hợp lệ
      else {
        return "Định dạng không hợp lệ"; // Trả về lỗi
      }
    }
  }
  // Trả về kết quả
  return result;
}
Để sử dụng hàm này, bạn cần làm như sau:

Mở Google Spreadsheets và chọn Tools -> Script editor.
Dán mã của hàm vào cửa sổ mới và lưu lại.
Quay lại bảng tính và nhập =countBottles("5T3L5C") vào một ô bất kỳ.
Bạn sẽ thấy kết quả là 143.
Mình hy vọng hàm này sẽ giúp bạn tiết kiệm thời gian và công sức khi kiểm kho.
(From Bing AI)
 
Trong bảng không thấy 5 tờ 3 lờ 5 cờ ở đâu cả.
Ngoài tờ lờ cờ thì còn những thể loại nào? Quy ước ra làm sao?
Mấy cái này công thức có thể làm được.
Công thức thì vào đây mà làm nè.

1704250340488.png

Phải nhìn nhận thớt và tác giả bài #2 là "đôi lứa xứng đôi" Cùng có kỹ thuật copy/paste để rải bài. :p
 
Hôm qua nay tôi thấy trang GPE bị lỗi gì đó cứ báo lỗi không post bài được nhưng thực ra là nó đã post, nếu thấy lỗi, bấm vài lần nữa là tự động tạo ra một đống bài và merged lại với nhau đó anh. Tôi cũng bị nên phải vô xóa bớt bài.
 
Lần chỉnh sửa cuối:
Hôm qua nay tôi thấy trang GPE bị lỗi gì đó cứ báo lỗi không post bài được nhưng thực ra là nó đã post, nếu thấy lỗi, bấm vài lần nữa là tự động tạo ra một đống bài và merged lại với nhau đó anh.
Dạ đúng rồi bác. Như bác dưới đây khả năng cũng bị như vậy.
Screenshot_20240103-115324.png
 
Nếu chỉ là như bạn nói thì có thể dùng công thức như hình dưới
F2==LEFT(E2,FIND("T",E2)-1)*24+MID(E2,FIND("T",E2)+1,FIND("L",E2)-1-FIND("T",E2))*6+MID(E2,FIND("L",E2)+1,FIND("C",E2)-1-FIND("L",E2))*1
Capture.PNG

Công thức nhìn hơi "nông dân" tí nhưng chạy tốt
 
Nếu dùng Google Apps Script thì Bing AI chỉ dẫn hơi rườm rà, có lẽ là do nó lụm từ những nơi viết hàm căn bản.

Dùng code thì chỉ việc dùng hàm Replace thay thế T bằng *24+, L bằng *6+, C bằng *1 hoặc "". Mẹo: dùng Regex thì capture T/L/C rồi thay thế.
Kế đó dùng hàm Eval nó tính cho.
 
Sorry các bác nhé, hôm qua mình bấm đăng bài chỉ nhận được thôn báo lỗi, nên mình back lại và bấm phát nữa, nó đẻ ra thành 2 bài, và cũng ko biết cách làm sao để xóa bài
Bài đã được tự động gộp:

Nếu chỉ là như bạn nói thì có thể dùng công thức như hình dưới
F2==LEFT(E2,FIND("T",E2)-1)*24+MID(E2,FIND("T",E2)+1,FIND("L",E2)-1-FIND("T",E2))*6+MID(E2,FIND("L",E2)+1,FIND("C",E2)-1-FIND("L",E2))*1
View attachment 298014

Công thức nhìn hơi "nông dân" tí nhưng chạy tốt
Mình đã thử nhưng bị error ạ

1704320468050.png
Bài đã được tự động gộp:

Trong bảng không thấy 5 tờ 3 lờ 5 cờ ở đâu cả.
Ngoài tờ lờ cờ thì còn những thể loại nào? Quy ước ra làm sao?
Mấy cái này công thức có thể làm được.
Chỉ có T L C của nước ngọt thôi bác, các cái khác mình nhập ít, ít phải tính toán nên mình tự nhẩm rồi điền thẳng vào luôn
Ví dụ : 1 vỉ trứng và 4 quả thì mình nhập thẳng thành 34 quả trứng, 1 thùng mì và thêm 6 gói mình nhập thẳng thành 36 gói


Quy ước là : 1T (thùng) là 24 chai, 1 L (lốc) là 6 chai


Trong bảng ko có 5T3L5C là tại mình chưa biết làm để nó ra số, nên mình đang để ô B2 là =5*24+3*6+5
Bài đã được tự động gộp:

Bạn có thể sử dụng một hàm tùy chỉnh trong Google Spreadsheets để chuyển đổi định dạng 5T3L5C thành số lượng chai. Hàm này sẽ tách chuỗi thành các phần tử và nhân với số lượng tương ứng của mỗi đơn vị. Sau đó, hàm này sẽ cộng tất cả các phần tử lại để ra kết quả cuối cùng.

Đây là mã của hàm tùy chỉnh:
Mã:
function countBottles(input) {
  // Khai báo các biến
  var result = 0; // Kết quả
  var unit = 0; // Đơn vị hiện tại
  var value = 0; // Giá trị hiện tại
  var multiplier = 0; // Hệ số nhân của mỗi đơn vị
  var units = ["T", "L", "C"]; // Các đơn vị có thể có
  var multipliers = [24, 6, 1]; // Các hệ số nhân tương ứng

  // Duyệt qua từng ký tự của chuỗi đầu vào
  for (var i = 0; i < input.length; i++) {
    var char = input.charAt(i); // Lấy ký tự hiện tại
    // Nếu ký tự là một số
    if (!isNaN(char)) {
      value = value * 10 + parseInt(char); // Cập nhật giá trị hiện tại
    }
    // Nếu ký tự là một chữ cái
    else {
      // Tìm đơn vị tương ứng với ký tự
      unit = units.indexOf(char.toUpperCase());
      // Nếu đơn vị hợp lệ
      if (unit != -1) {
        multiplier = multipliers[unit]; // Lấy hệ số nhân
        result += value * multiplier; // Cộng vào kết quả
        value = 0; // Đặt lại giá trị
      }
      // Nếu đơn vị không hợp lệ
      else {
        return "Định dạng không hợp lệ"; // Trả về lỗi
      }
    }
  }
  // Trả về kết quả
  return result;
}
Để sử dụng hàm này, bạn cần làm như sau:

Mở Google Spreadsheets và chọn Tools -> Script editor.
Dán mã của hàm vào cửa sổ mới và lưu lại.
Quay lại bảng tính và nhập =countBottles("5T3L5C") vào một ô bất kỳ.
Bạn sẽ thấy kết quả là 143.
Mình hy vọng hàm này sẽ giúp bạn tiết kiệm thời gian và công sức khi kiểm kho.
(From Bing AI)

Cách này mình thử đã thành công ạ, cảm ơn các bác
 
Lần chỉnh sửa cuối:
Chủ thớt: Sao bài này không tách 3 cột nhập cho dễ mà cứ phải dính chùm vậy bạn
1704355565231.png
anh @befaint : em thấy cái hay của ggs là chỗ if rỗng trả rỗng thì không cần nhập "" , nhóm hàm ifna, iferror có thể không cần nhập tham số thứ 2
 
Trend trả lời bằng hình ảnh có vẻ hot nhỉ.
View attachment 298058
Wow, ngắn gọn quá, thank bạn
Vậy ví dụ muốn thêm kỳ tự TM (thùng mì là 30), V (vỉ trứng 30 trái), TT (thùng trứng là 150 trái) thì thêm sao bạn nhỉ
Cách này của bạn mình thích hơn cái script ở #2, tại script mỗi lần điền xong nó hiện loading mãi mới chịu tính ra số cho
 
Vậy ví dụ muốn thêm kỳ tự TM (thùng mì là 30), V (vỉ trứng 30 trái), TT (thùng trứng là 150 trái) thì thêm sao bạn nhỉ
Người ta hỏi rõ ngay từ đầu thì bạn trả lời thế này
Chỉ có T L C của nước ngọt thôi bác, các cái khác mình nhập ít, ít phải tính toán nên mình tự nhẩm rồi điền thẳng vào luôn
 
Wow, ngắn gọn quá, thank bạn
Vậy ví dụ muốn thêm kỳ tự TM (thùng mì là 30), V (vỉ trứng 30 trái), TT (thùng trứng là 150 trái) thì thêm sao bạn nhỉ
Cách này của bạn mình thích hơn cái script ở #2, tại script mỗi lần điền xong nó hiện loading mãi mới chịu tính ra số cho
Khi đưa bài bạn nên nói nhiều trường hợp nha.
 
Lần chỉnh sửa cuối:
Wow, ngắn gọn quá, thank bạn
Vậy ví dụ muốn thêm kỳ tự TM (thùng mì là 30), V (vỉ trứng 30 trái), TT (thùng trứng là 150 trái) thì thêm sao bạn nhỉ
Cách này của bạn mình thích hơn cái script ở #2, tại script mỗi lần điền xong nó hiện loading mãi mới chịu tính ra số cho
Bạn nêu hết các trường hợp một lần luôn chứ ngẫu hứng kiểu nà không ổn đâu. Nếu 2 trứng và 2 thùng đều là 2T hết thì sao mà tính.
 
Thì nhu cầu mình chủ yếu đếm nước ngọt, giải quyết đc cái đó là ok rồi

Thấy tiện lợi quá nên mới muốn áp dụng thêm cho các thứ khác thôi ấy mà
Vậy mình làm cho Bạn xem thử. Nó tham chiếu số lượng của từng ký tự theo cột bên cạnh: =ArrayFormula(MAP(TOCOL(A1:A,3),LAMBDA(ma,SUM(MAP(G1:G26,LAMBDA(a,IFERROR({REGEXEXTRACT(ma,"(\d+)"&a)*VLOOKUP(a,G1:H26,2,0)}))))))) https://docs.google.com/spreadsheets/d/14CEIKrVFKSGWM5yk3urt4rphJVMCzNxyZNVA3qVJ4zA/edit?usp=sharing
 
Web KT
Back
Top Bottom