Tách 1 số từ tổng (1 người xem)

  • Thread starter Thread starter pjsoga
  • Ngày gửi Ngày gửi
Liên hệ QC

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

pjsoga

Thành viên chính thức
Tham gia
31/3/11
Bài viết
58
Được thích
1
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 ạ!
 

File đính kèm

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
 

File đính kèm

Upvote 0
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
Bấm cảm ơn cái nhưng thiệt tình đọc yêu cầu của chủ topic và bài giải của anh thì em cảm thấy mình đang ở hành tinh nào đó.
 
Upvote 0
Bấm cảm ơn cái nhưng thiệt tình đọc yêu cầu của chủ topic và bài giải của anh thì em cảm thấy mình đang ở hành tinh nào đó.

Đúng thế, cũng bấm 1 cái cảm ơn cho LÒNG DŨNG CẢM CỦA BÁC ẤY, hihi

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 ạ!

1 số tách ra thành tổng của 2 hoặc 3 số con -- thì có nhiều đáp án lém, nên BÀI NÀY bạn cần đặt rõ lại vấn đề, và tại sao lại phải tách như vậy???

Có nhiều đáp án thì sẽ nhiều phương án kết quả, vậy thì biết chọn cái nào?
 
Upvote 0
Ế quá, hổng thấy ai làm nên lôi bài này ra ......làm đại. Híc
Thân
Thấy cho dùng công thức định nhảy vô coi sao?!!!! Khó xơi quá
@concogia: tôm tép bị tuyệt chủng hết rồi à bác, xơi chi đá sỏi, làm anh em đau đầu quá.
 
Upvote 0
Đầ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!
 
Upvote 0
Đầ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ải củ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

 
Upvote 0
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!
 

File đính kèm

Upvote 0

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

Back
Top Bottom