vonguyen3745
Thành viên hoạt động
- Tham gia
- 18/7/09
- Bài viết
- 145
- Được thích
- 5
Nếu dùng công thức với dạng toán này thì thật là chua lắm đó. Có nhiêu con vật bạn liệt kê ra hết đi.View attachment 265170
Các bác tính giúp em theo yêu cầu trong hình với.
Tại E4View attachment 265170
Các bác tính giúp em theo yêu cầu trong hình với.
=SUMPRODUCT(ROW($A$1:$A$9)*(LEN(D4)-LEN(SUBSTITUTE(" "&D4," "&ROW($A$1:$A$9)&" ",""))+1)/3)
Nếu dữ liệu như vầy bạn dùng công thức này, Ctrl+Shift+EnterView attachment 265170
Các bác tính giúp em theo yêu cầu trong hình với.
=SUM(IFERROR(--TRIM(MID(SUBSTITUTE(D4," ",REPT(" ",100)),(ROW($1:$100)-1)*100+1,100)),))
=SUMPRODUCT(IFERROR(--LEFT(TRIM(MID(SUBSTITUTE(SUBSTITUTE(D4,";",","),",",REPT(" ",99)),(1+ROW($1:$9)-1)*99-98,99)),FIND(" ",TRIM(MID(SUBSTITUTE(SUBSTITUTE(D4,";",","),",",REPT(" ",99)),(1+ROW($1:$9)-1)*99-98,99)))-1),0))View attachment 265170
Các bác tính giúp em theo yêu cầu trong hình với.
Mình thấy công thức mà ghi "--" là mình rất ngại vì trông nó kỳ kỳ và dễ gõ sót (mặc dù nó chính là phủ định của phủ định) cho nên mình thường dùng "1*" cho dễ nhớ và không thấy kỳ kỳ. Hehe.Nếu dữ liệu như vầy bạn dùng công thức này, Ctrl+Shift+Enter
Mã:=SUM(IFERROR(--TRIM(MID(SUBSTITUTE(D4," ",REPT(" ",100)),(ROW($1:$100)-1)*100+1,100)),))
=SUM(IFERROR(1*TRIM(MID(SUBSTITUTE(D5," ",REPT(" ",100)),(ROW($1:$100)-1)*100+1,100)),))
Bạn tham khảo hàm tự tạo xem sao.View attachment 265170
Các bác tính giúp em theo yêu cầu trong hình với.
Hàm này chỉ dúng với những số nhỏ hơn 10 à bác, nếu số lớn hơn 10 thì không đúng, Em sorry các bác là đưa file demo nó không tổng quát, ý em là tính tổng những số ở đầu chuỗi sau dấu , hoặc ;. Thanks các bác đã quan tâmBạn tham khảo hàm tự tạo xem sao.
Vậy là hàng thật không giống với quảng cáo rồi.Hàm này chỉ dúng với những số nhỏ hơn 10 à bác, nếu số lớn hơn 10 thì không đúng, Em sorry các bác là đưa file demo nó không tổng quát, ý em là tính tổng những số ở đầu chuỗi sau dấu , hoặc ;. Thanks các bác đã quan tâm
Nếu mà dùng hàm tự tạo thì dùng hàm này nó OK hơn nè bạn:Bạn tham khảo hàm tự tạo xem sao.
Function SumInText(ByVal strTextNum As String) As Double
Dim strTemp As String
With CreateObject("VBScript.RegExp")
.Global = True
.Pattern = "\D+"
strTemp = .Replace(strTextNum, Space(1))
End With
SumInText = Evaluate(Replace(Trim(strTemp), Space(1), "+"))
End Function
Hay quá anh, em đang nghĩ mà chưa ra được ạ.Nếu mà dùng hàm tự tạo thì dùng hàm này nó OK hơn nè bạn:
View attachment 265177
PHP:Function SumInText(ByVal strTextNum As String) As Double Dim strTemp As String With CreateObject("VBScript.RegExp") .Global = True .Pattern = "\D+" strTemp = .Replace(strTextNum, Space(1)) End With SumInText = Evaluate(Replace(Trim(strTemp), Space(1), "+")) End Function
Bạn có thể dùng hàm FILTERXML nếu phiên bản excel >= 2013.Các bác tính giúp em theo yêu cầu trong hình với.
CreateObject("VBScript.RegExp") và hàm Evaluate khá nặng, nếu gọi nhiều lần tốc độ sẽ chậmNếu mà dùng hàm tự tạo thì dùng hàm này nó OK hơn nè bạn:
View attachment 265177
PHP:Function SumInText(ByVal strTextNum As String) As Double Dim strTemp As String With CreateObject("VBScript.RegExp") .Global = True .Pattern = "\D+" strTemp = .Replace(strTextNum, Space(1)) End With SumInText = Evaluate(Replace(Trim(strTemp), Space(1), "+")) End Function
- Nếu trước hoặc sau số không có dấu cách thì số đó không được tính nên kết quả sai.Bạn có thể dùng hàm FILTERXML nếu phiên bản excel >= 2013.
.=SUM(FILTERXML("<p><i>"&SUBSTITUTE(D4," ","</i><i>")&"</i></p>","//i"))
Ctrl + Shift + Enter.
Function MySum(ByVal txt As String) As Double
Dim i As Long
For i = 1 To Len(txt)
If Mid(txt, i, 1) Like "[0-9.]" = False Then Mid(txt, i, 1) = " "
Next i
MySum = Evaluate(Replace(Application.Trim(txt), " ", "+") & "+0")
End Function
Hình như phần lớn mọi người từ mấy tuần nay ngồi nhà thì phải. Việt Nam khổ quá. Liên tục hàng ngày hơn 10 000 ca, mấy trăm người chết.Giải trí mùa dịch:
Bài #10 cũng chỉ là tạm thời đúng với dữ liệu như bà̀i #10 thôi. Vì thực tế là chủ thớt cho 2 ví dụ mà toàn là số con vật nên không thể có 1.5 con chó được. Nếu ta bàn về số lượng thịt chó thì phải tính rộng hơn. Rất có thể dữ liệu có được từ việc nối chuỗi. Vd. cột A là tên các con vật, cột B là số lượng thịt của con vật đó trong mỗi đơn nhập. Và cột D là nối chuỗi các ô trong A và B của tất cả các dòng dữ liệu. Nếu là tôi nhập liệu thì rõ ràng tôi phải nhập với dấu phẩy là dấu thập phân vì thiết lập của tôi là vậy. Vậy nếu tôi có D4 = "2 kg ngan; 3,5 kg chó" thì công thức của bạn trả về 10 chứ không phải là 5,5.Dữ liệu là: "1.5 kg thịt chó", Hàm bài 10 sẽ có kết quả là 6
Function Sum_ABC(strNum As String) As Double
Dim i&, fNum&, tmp#
For i = 1 To Len(strNum)
If fNum = 0 Then
If Mid(strNum, i, 1) Like "#" Then fNum = i
ElseIf Mid(strNum, i, 1) Like "[0-9.]" = False Then
tmp = tmp + Val(Mid(strNum, fNum, i - fNum))
fNum = 0
End If
Next
Sum_ABC = tmp
End Function
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 1
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 2