Tương đương với parseInt()
(JS) hoặc intval()
(PHP) trong Google Sheets là gì?
Tôi muốn tính tổng của các số trong một hàng trong một ô riêng biệt. Vì vậy, nếu tôi có 3 cups
và 5 cups
liên tiếp, tôi sẽ nhận được 18
.
Tương đương với parseInt()
(JS) hoặc intval()
(PHP) trong Google Sheets là gì?
Tôi muốn tính tổng của các số trong một hàng trong một ô riêng biệt. Vì vậy, nếu tôi có 3 cups
và 5 cups
liên tiếp, tôi sẽ nhận được 18
.
Câu trả lời:
Một cách để thực hiện một cái gì đó như thế này là
=VALUE(INDEX(FILTER(SPLIT(A1, " "), ISNUMBER(SPLIT(A1, " "))); 1; 1))
Kết quả của công thức này cho một số chuỗi ví dụ được đưa ra dưới đây.
Bạn có thể phải sửa đổi điều này cho phù hợp với nhu cầu cá nhân của bạn. Nó sẽ hoạt động khá tốt đối với các chuỗi đơn giản như "3 cốc".
SPLIT(..., " ")
chia một chuỗi thành các phần tách biệt không gian của nó. Bạn có thể thêm nhiều ký tự vào chuỗi, ví dụ " -/"
, để phân tách bất cứ khi nào các ký tự đó được tìm thấy.
ISNUMBER
kiểm tra nếu một chuỗi là một số.
FILTER
lấy mảng và lọc ra mọi thứ không thỏa mãn hàm thứ hai, nghĩa là nó lấy ra mọi thứ không phải là số.
INDEX(...; 1; 1)
trả về giá trị trong hàng đầu tiên, cột đầu tiên của mảng (vì vậy chúng tôi chỉ nhận được số đầu tiên được liệt kê, không phải tất cả các số được liệt kê).
VALUE
có lẽ sẽ không cần thiết, nhưng chỉ cần có biện pháp tốt, nó sẽ chuyển đổi chuỗi cuối cùng thành một giá trị số.
VALUE
...
VALUE
phát sinh lỗi ("không thể phân tích thành số") trên tất cả các ví dụ đầu vào mà tôi đã đưa ra trong câu trả lời.
VALUE
là câu trả lời cho câu hỏi đầu tiên của OP và tiêu đề cũng vậy.
Một parseInt()
thay thế là:
=INT()
=SUM(ARRAYFORMULA(INT(LEFT(B1:B2, LEN(B1:B2)-5))))
Các LEN(B1:B2)-5
, bao gồm một không gian màu trắng.
Có vẻ là một sử dụng tốt cho regex. Ví dụ:
Trong đó công thức trong E2 là:
="="&join("+",ArrayFormula(regexreplace(B2:D2,"\D","")))
Điều này dải tất cả các số không, nối kết quả với +
và trả trước =
.
Sao chép / Dán / Dán các giá trị chỉ vào, giả sử, F2 (có thể là E2) sau đó Thay thế =
bằng =
.