tính tổng trọng lượng của một công thức hóa học. (2 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

File đính kèm

Đã làm xong công thức tổng quát, không ai tham gia khá buồn:

Công thức chia làm 3 phần, dựa theo công thức bạn @huonglien1901 đã đưa lên, tổng kết bằng hảm SUM để cộng lại:

+ Name #arr=ROW(INDIRECT("1:"&LEN(Sheet1!$A2)))
+ Name #sym=Sheet1!$C$2:$C$110

+ Phần 1:
Lấy trọng lượng từng chất:

SUMIF(sym,MID(A2,arr,MMULT(--(ABS({77.5,107.5}-CODE(MID(A2&0,arr+{0,1},1)))<13),{1;1}),D$2)

+ Phần 2:
Nhân từng chất cho số trọng lượng kế bên:

RIGHT(SMALL(IFERROR(--MID(A2,MMULT(--(ABS({77.5,107.5}-CODE(MID(A2&0,arr+{0,1},1)))<13),{1;1})+arr,{1,2,3}),1)+arr*1000,arr*3),3)

+ Phần 3:
Tính phép tính nhân cho từng ngoặc từ ngoài cùng cho đến vào trong (chỉ tính cho ngoặc lồng nhau), ở đây chú ý số 1 là ngoặc ngoài cùng rồi số tăng dần cho các ngoặc vào trong, vì không có công thức nhân mảng cho mảng theo dòng hay cột nên càng nhiều ngoặc càng dài:
Ví dụ: (00) (0000) tính là 1 ngoặc còn (0(000)2)2 thì ngoặc trong tính là ngoặc thứ 2

RIGHT(SMALL(IFERROR(--MID(A2,LOOKUP(arr,SMALL(IF((MID(A2,arr,1)={"(",")"})*MMULT(LEN(SUBSTITUTE(LEFT({"",0}&A2,arr),{"(",")"},"")),{-1;1})=1,arr),arr+IF({1,0},,1/ISODD(arr))))+1,{1,2,3}),1)+arr*1000,arr*3),3)
 
Lần chỉnh sửa cuối:
Web KT

Bài viết mới nhất

Back
Top Bottom