Công thức Excel: Các ký tự dải LAMBDA
Công thức Excel: Các ký tự dải LAMBDA

Tóm lược

Đây là một công thức thử nghiệm để tách các ký tự khỏi văn bản bằng công thức được tạo bằng ĐỂ CHOLAMBDA chức năng. Trong ví dụ được hiển thị, công thức trong F5, được sao chép xuống, là:

=LET(text,B5,chars,C5,rep,D5,keep,E5,
textarr,CODE(MID(text,SEQUENCE(LEN(text)),1)),
chararr,CODE(MID(chars,SEQUENCE(LEN(chars)),1)),
TEXTJOIN("",1,IF(ABS(keep-ISNUMBER(MATCH(textarr,chararr,0))),rep&"",CHAR(textarr)))
)

Không giống như công thức giải thích ở đây, công thức này không đệ quy.

Giải trình

Đây là một công thức thử nghiệm để tách các ký tự khỏi văn bản. Phần thử nghiệm đang sử dụng mã ký tự thay vì các ký tự thông thường như một cách để làm cho công thức phân biệt chữ hoa chữ thường và cung cấp một cách để đảo ngược logic của công thức với tham số đầu vào “keep”. Không giống như công thức giải thích ở đây, công thức này không đệ quy.

Công thức có bốn đầu vào:

bản văn – văn bản đến
ký tự – các ký tự để tước
đại diện – ký tự để thay thế các ký tự bị tước bằng
giữ – dải hoặc giữ nguyên ký tự (FALSE = dải, TRUE = giữ nguyên)

Các giữ tham số là một boolean “lật” hoạt động của hàm từ loại bỏ ký tự sang bảo toàn ký tự.

Tóm lại, Hàm SEQUENCE được sử dụng để tạo ra hai mảng: một cho bản văn, một cho ký tự. Để làm cho hàm phân biệt chữ hoa chữ thường, các mảng này không bao gồm các ký tự mà bao gồm các mã ASCII cho mỗi ký tự.

textarr,CODE(MID(text,SEQUENCE(LEN(text)),1)),
chararr,CODE(MID(chars,SEQUENCE(LEN(chars)),1))

Các Hàm MID trích xuất một ký tự tại một thời điểm và trả về mã số. Bên trong Hàm IF, bài kiểm tra logic là:

ABS(keep-ISNUMBER(MATCH(textarr,chararr,0))) // logical test

Các THÁNG NĂMTRẬN ĐẤU kết hợp kiểm tra từng mã trong textarr chống lại mã trong chararr. Các Chức năng ABS được sử dụng như một cách để đảo ngược logic của công thức. Nếu giữ được đặt thành FALSE hoặc 0, logic ISNUMBER + MATCH không thay đổi và ký tự bị tước. Nếu giữ là TRUE (hoặc 1) logic bị đảo ngược – ký tự được giữ nguyên và các ký tự khác bị tước bỏ.

Phiên bản LAMBDA

Để chuyển đổi công thức thành Hàm LAMBDA để công thức có thể được đặt tên và sử dụng lại trong toàn bộ sổ làm việc, bốn đối số đầu vào được chuyển lên phía trước, theo sau là phép tính, được bao bọc trong LET:

=LAMBDA(text,chars,rep,keep,
LET(
textarr,CODE(MID(text,SEQUENCE(LEN(text)),1)),
chararr,CODE(MID(chars,SEQUENCE(LEN(chars)),1)),
TEXTJOIN("",1,IF(ABS(keep-ISNUMBER(MATCH(textarr,chararr,0))),rep&"",CHAR(textarr)))
))

Sau khi hàm LAMBDA được đặt tên là “StripCharacters”, hàm có thể được gọi như thế này:

=StripCharacters(B5,"()-","",FALSE)

Theo ví dụ được hiển thị, văn bản nằm trong ô B5, các ký tự để tách là “() -“, chuỗi thay thế là “” và chế độ bảo toàn được đặt thành FALSE.

https://exceljet.net/formula/lambda-strip-characters