Dear các anh chị!
Em có 1 số từ tổng của 2 số, hoặc 3 số, giờ em lại muốn dùng công thức hoặc VBA để tách tổng về 2, hoặc 3 số ban đầu, hoặc tổng của tổng nhiều số. Nếu là nhiều số thì lấy theo quy tắc bên phải hoặc bên trái như file em đính kèm.
Vậy anh chị nào đã từng gặp qua vấn đề này xin chỉ bảo giúp em.
Em xin cảm ơn ạ!
Dear các anh chị!
Em có 1 số từ tổng của 2 số, hoặc 3 số, giờ em lại muốn dùng công thức hoặc VBA để tách tổng về 2, hoặc 3 số ban đầu, hoặc tổng của tổng nhiều số. Nếu là nhiều số thì lấy theo quy tắc bên phải hoặc bên trái như file em đính kèm.
Vậy anh chị nào đã từng gặp qua vấn đề này xin chỉ bảo giúp em.
Em xin cảm ơn ạ!
Hình như đề bài này chưa tổng quát & hơi "mơ huyền hồ"
Nói lại cụ thể thế này:
- Cell [N5] chứa công thức là tổng của nhiều cell (trong bài là cell [D5], [G5], [J5] )
- Cell [D5], là một tổng gồm có 2 số hạng nhập trực tiếp ( tương tự là các cell [G5], [J5]), tạm gọi là tổng con
Kết quả:
1)- Dùng [N5] làm cell để tham chiếu lấy ra các số hạng thứ nhất ( số bên trái) trong các tổng con gom vào một cục & tính tổng
2)- Dùng [N5] làm cell để tham chiếu lấy ra các số hạng thứ hai ( số bên phải) trong các tổng con gom vào một cục & tính tổng
Nếu đúng như vậy có thể dùng tạm code này
Mã:
Public Function TachTong(Cll As Range, Optional Dk As String)
Dim Re, ReTim, A, C, Trai As String, Phai As String, iTrai As Double, iPhai As Double
Set Re = CreateObject("vbscript.regexp")
With Re
.Global = True
.Pattern = "[A-Z]+[0-9]+"
Set ReTim = .Execute(Cll.Formula)
For Each A In ReTim
.Pattern = "[0-9]+"
Set C = .Execute(Range(A).Formula)
Trai = Trai & C.Item(0).Value & "+": iTrai = iTrai + Val(C.Item(0).Value)
Phai = Phai & C.Item(1).Value & "+": iPhai = iPhai + Val(C.Item(1).Value)
Next A
End With
Trai = Left(Trai, Len(Trai) - 1) & "= " & iTrai
Phai = Left(Phai, Len(Phai) - 1) & "= " & iPhai
If UCase(Dk) = "T" Then
TachTong = Trai
Else
TachTong = Phai
End If
End Function
Ế quá, hổng thấy ai làm nên lôi bài này ra ......làm đại. Híc
Thân
Hình như đề bài này chưa tổng quát & hơi "mơ huyền hồ"
Nói lại cụ thể thế này:
- Cell [N5] chứa công thức là tổng của nhiều cell (trong bài là cell [D5], [G5], [J5] )
- Cell [D5], là một tổng gồm có 2 số hạng nhập trực tiếp ( tương tự là các cell [G5], [J5]), tạm gọi là tổng con
Kết quả:
1)- Dùng [N5] làm cell để tham chiếu lấy ra các số hạng thứ nhất ( số bên trái) trong các tổng con gom vào một cục & tính tổng
2)- Dùng [N5] làm cell để tham chiếu lấy ra các số hạng thứ hai ( số bên phải) trong các tổng con gom vào một cục & tính tổng
Nếu đúng như vậy có thể dùng tạm code này
Mã:
Public Function TachTong(Cll As Range, Optional Dk As String)
Dim Re, ReTim, A, C, Trai As String, Phai As String, iTrai As Double, iPhai As Double
Set Re = CreateObject("vbscript.regexp")
With Re
.Global = True
.Pattern = "[A-Z]+[0-9]+"
Set ReTim = .Execute(Cll.Formula)
For Each A In ReTim
.Pattern = "[0-9]+"
Set C = .Execute(Range(A).Formula)
Trai = Trai & C.Item(0).Value & "+": iTrai = iTrai + Val(C.Item(0).Value)
Phai = Phai & C.Item(1).Value & "+": iPhai = iPhai + Val(C.Item(1).Value)
Next A
End With
Trai = Left(Trai, Len(Trai) - 1) & "= " & iTrai
Phai = Left(Phai, Len(Phai) - 1) & "= " & iPhai
If UCase(Dk) = "T" Then
TachTong = Trai
Else
TachTong = Phai
End If
End Function
Ế quá, hổng thấy ai làm nên lôi bài này ra ......làm đại. Híc
Thân
Dear các anh chị!
Em có 1 số từ tổng của 2 số, hoặc 3 số, giờ em lại muốn dùng công thức hoặc VBA để tách tổng về 2, hoặc 3 số ban đầu, hoặc tổng của tổng nhiều số. Nếu là nhiều số thì lấy theo quy tắc bên phải hoặc bên trái như file em đính kèm.
Vậy anh chị nào đã từng gặp qua vấn đề này xin chỉ bảo giúp em.
Em xin cảm ơn ạ!
Đầu tiên em xin cảm ơn bác nhiều nhiều, bác đã dành thời gian ra giúp em ạ! Về bài toán thì thực tình mơ hồ vì em chưa chỉ tổng quát như bác nói. Về kết quả thì em chỉ cấn giá trị của tổng được tách như 1518 hay 3020, em có mò sửa đoạn code của bác End With Trai = iTrai
Phai = iPhai If UCase(Dk) = "T" Then thì được như yêu cầu. ^^ . Em thì không biết gì về VBA, em cố gắng học VBA thôi! Chắc em phải làm phiền bác nhiều nhiều, mong bác giúp đỡ em ạ. EM XIN CẢM ƠN!
Đầu tiên em xin cảm ơn bác nhiều nhiều, bác đã dành thời gian ra giúp em ạ! Về bài toán thì thực tình mơ hồ vì em chưa chỉ tổng quát như bác nói. Về kết quả thì em chỉ cấn giá trị của tổng được tách như 1518 hay 3020, em có mò sửa đoạn code của bác End With Trai = iTrai
Phai = iPhai If UCase(Dk) = "T" Then thì được như yêu cầu. ^^ . Em thì không biết gì về VBA, em cố gắng học VBA thôi! Chắc em phải làm phiền bác nhiều nhiều, mong bác giúp đỡ em ạ. EM XIN CẢM ƠN!
Nếu bạn chỉ cần giá trị của Tổng mà không cần phần diễn giảicủa giá trị Tổng thì bài toán đơn giản hơn nhiều, các biến Trai, Phai có thể bỏ đi, đỡ công đoạn tính nó
Thí dụ: If UCase(Dk) = "T" Then
TachTong=iTrai
Else
TachTong=iPhai
......
Dù sao thì cũng để bạn tự mò mẫn và sửa code thì ......từ từ mới biết được
Cú pháp: =TachTong(cell tham chiếu)
Nếu phía sau không ghi gì là tính Tổng bên phải, nếu có "T" là tính tổng bên trái_ =TachTong(cell tham chiếu,"T")
Thân
Chào bác!
Em lại có 1 vấn đề làm phiền bác ạ.
Em 1 có 1file link công thức theo từng ngày của 1 file khác. File này được nhập dữ liệu theo từng ngày hiện tại. Mục tiêu của em là sau mỗi ngày thì giá trị dạng công thức đó tự động chuyển sang dạng giá trị mà không cần paste value nữa ạ.
Và mình có thể quy định được địa chỉ cẩn chuyển đổi được không ạ? Cả theo hàng và theo cột. từ A2:A10 hay A2: B15. ( ngày cũng sẽ theo hàng hay cột ạ)
Bác xem file giúp em ạ.
Em cám ơn bác nhiều nhiều!