Anh chị giúp em bài tính tổng này với ạ

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

nguyenngoc31

Thành viên mới
Tham gia
12/12/21
Bài viết
1
Được thích
0
Em được giao việc tính file dưới như hình ảnh này mà lâu em không dùng đến hàm trong excel nên bị quên, nhờ anh chị chỉ giúp em với ạ. Em cảm ơn rất nhiều ạ!!
Ở trong file em đang tính dựa vào hàm sum kết hợp hàm right em không biết đúng hay không nhưng em chỉ tính được 3 ô thôi ạ
Dữ liệu hiển thị trong 1 ô bên dưới là số bài đúng/ số bài đã làm/ tổng số bài
1693478844218.png
 

File đính kèm

  • BTVN2345ondt.xlsx
    67.9 KB · Đọc: 8
Em được giao việc tính file dưới như hình ảnh này mà lâu em không dùng đến hàm trong excel nên bị quên, nhờ anh chị chỉ giúp em với ạ. Em cảm ơn rất nhiều ạ!!
Ở trong file em đang tính dựa vào hàm sum kết hợp hàm right em không biết đúng hay không nhưng em chỉ tính được 3 ô thôi ạ
Dữ liệu hiển thị trong 1 ô bên dưới là số bài đúng/ số bài đã làm/ tổng số bài
View attachment 294417
Trong khi chờ đợi các phương án khác có thể dùng Hàm UDF này xem sao:
Mã:
Option Explicit

Function TinhToan(ByVal Rng As Range) As Variant
Dim i&, j&, Lr&, k&, t&, R&, C&
Dim Arr(), KQ(), S
Dim Dung, DaLam
Dim Ws As Worksheet ', Rng As Range
Set Ws = ActiveSheet
Lr = Ws.Cells(10000, 2).End(3).Row
'Set Rng = Ws.Range("D3:M" & Lr)
Arr = Rng.Value
R = UBound(Arr): C = UBound(Arr, 2)
ReDim KQ(1 To R, 1 To 3)
For i = 1 To R
    Dung = 0: DaLam = 0
    For j = 1 To C
        If Arr(i, j) <> Empty Then
            If InStr(Arr(i, j), "/") Then
                S = Split(Arr(i, j), "/")
                Dung = --S(0) + Dung
                DaLam = --S(1) + DaLam
                If InStr(Arr(i, j), "(") > 0 Then
                    KQ(i, 1) = --Left(S(2), InStr(S(2), "(") - 1) + KQ(i, 1)
                Else
                    KQ(i, 1) = --S(2) + KQ(i, 1)
                End If
            End If
        End If
    Next j
If Dung > 0 Then KQ(i, 2) = Format(Dung / KQ(i, 1), "0.00%")
If DaLam > 0 Then KQ(i, 3) = Format(DaLam / KQ(i, 1), "0.00%")
Next i
'Ws.Range("N3").Resize(R, 3) = KQ
TinhToan = KQ
End Function
Cú pháp: Ô nào đó=TinhToan(Vùng tính)
Vidu: N3=TinhToan(D3:M35) sau đó enter.
P/S: Hàm UDF này chạy được trên Sheet 2ON và Tôi không hiểu các Sheet sau sheet 2ON là sheet được khóa hay làm gì đó mà Hàm UDF này không chạy, không những thế gõ vào ô nào đó =1+1 sau đó nhấn enter cũng không ra kết quả mà cứ vẫn là = 1+1.
Rất mong mọi người ghé qua cho nhận xét về UDF để hoàn thiện hơn. và ai biết nó tại sao lại không chạy ở các Sheet khác thì chia sẻ để tôi được học thêm.
Trân trọng cảm ơn.
 

File đính kèm

  • BTVN2345ondt.xlsm
    76.5 KB · Đọc: 11
Upvote 0
Chú nhạy nhỉ. Sao cháu đọc còn chưa hiểu yêu cầu là gì luôn
Tôi cũng đoán mò đấy.
Bạn đã tải file về và làm thử chưa? Chắc là cũng có đáp án rồi chứ? Nếu đã có nhớ chia sẻ để học hỏi nhé. Như bài của bạn quyenbv tìm mã NCC gì đó.
Chỗ UDF chạy ở sheet này mà không chạy ở sheet khác là thế nào mà tôi chịu không thể tìm ra nguyên nhân. Bạn biết chỉ cho tôi biết với nhé.
 
Upvote 0
Tôi cũng đoán mò đấy.
Bạn đã tải file về và làm thử chưa? Chắc là cũng có đáp án rồi chứ? Nếu đã có nhớ chia sẻ để học hỏi nhé. Như bài của bạn quyenbv tìm mã NCC gì đó.
Chỗ UDF chạy ở sheet này mà không chạy ở sheet khác là thế nào mà tôi chịu không thể tìm ra nguyên nhân. Bạn biết chỉ cho tôi biết với nhé.
Cháu chỉ đọc bài viết thôi. Đoc nhưng chưa hiểu yêu cầu luôn ấy. Nay bắt đầu vào nghỉ lễ rồi. Nên cháu đang ở quê. Hihi. Chúc chú và mọi người nghỉ lễ vui vẻ
 
Upvote 0
Bạn dùng Power query=> append query=>transform row header=> split column bài đúng/bài đã làm/Tổng bài ra 3 cột rồi sum và chia là được:
1693493046534.png
 
Upvote 0
Chỗ UDF chạy ở sheet này mà không chạy ở sheet khác là thế nào mà tôi chịu không thể tìm ra nguyên nhân. Bạn biết chỉ cho tôi biết với nhé.
Phần lớn đang để định dạng Text anh ơi. Em thử lọ mọ một chút và sheet 3ON cũng chạy được công thức của anh rồi.
 

File đính kèm

  • BTVN2345ondt.xlsm
    73.9 KB · Đọc: 6
Upvote 0
Trong khi chờ đợi các phương án khác có thể dùng Hàm UDF này xem sao:
Mã:
Option Explicit

Function TinhToan(ByVal Rng As Range) As Variant
Dim i&, j&, Lr&, k&, t&, R&, C&
Dim Arr(), KQ(), S
Dim Dung, DaLam
Dim Ws As Worksheet ', Rng As Range
Set Ws = ActiveSheet
Lr = Ws.Cells(10000, 2).End(3).Row
'Set Rng = Ws.Range("D3:M" & Lr)
Arr = Rng.Value
R = UBound(Arr): C = UBound(Arr, 2)
ReDim KQ(1 To R, 1 To 3)
For i = 1 To R
    Dung = 0: DaLam = 0
    For j = 1 To C
        If Arr(i, j) <> Empty Then
            If InStr(Arr(i, j), "/") Then
                S = Split(Arr(i, j), "/")
                Dung = --S(0) + Dung
                DaLam = --S(1) + DaLam
                If InStr(Arr(i, j), "(") > 0 Then
                    KQ(i, 1) = --Left(S(2), InStr(S(2), "(") - 1) + KQ(i, 1)
                Else
                    KQ(i, 1) = --S(2) + KQ(i, 1)
                End If
            End If
        End If
    Next j
If Dung > 0 Then KQ(i, 2) = Format(Dung / KQ(i, 1), "0.00%")
If DaLam > 0 Then KQ(i, 3) = Format(DaLam / KQ(i, 1), "0.00%")
Next i
'Ws.Range("N3").Resize(R, 3) = KQ
TinhToan = KQ
End Function
Cú pháp: Ô nào đó=TinhToan(Vùng tính)
Vidu: N3=TinhToan(D3:M35) sau đó enter.
P/S: Hàm UDF này chạy được trên Sheet 2ON và Tôi không hiểu các Sheet sau sheet 2ON là sheet được khóa hay làm gì đó mà Hàm UDF này không chạy, không những thế gõ vào ô nào đó =1+1 sau đó nhấn enter cũng không ra kết quả mà cứ vẫn là = 1+1.
Rất mong mọi người ghé qua cho nhận xét về UDF để hoàn thiện hơn. và ai biết nó tại sao lại không chạy ở các Sheet khác thì chia sẻ để tôi được học thêm.
Trân trọng cảm ơn.
Code viết rất tốt, tinh chỉnh thêm vài chổ sẽ hoàn hảo
Biến Lr không dùng và quên xóa
Khi Arr(i,j) ="4,5/6/6" thì --S(0)=45 kết quả biến "Dung" sẽ sai
KQ(i, 2) và KQ(i, 3) dùng hàm Format(Dung / KQ(i, 1), "0.00%") trả về dạng chuỗi và tính toán trên sheet có thể khó hơn, mình nghỉ không cần dùng hàm format, và trên sheet tự định dạng tay vùng %
 
Upvote 0
Code viết rất tốt, tinh chỉnh thêm vài chổ sẽ hoàn hảo
Biến Lr không dùng và quên xóa
Khi Arr(i,j) ="4,5/6/6" thì --S(0)=45 kết quả biến "Dung" sẽ sai
KQ(i, 2) và KQ(i, 3) dùng hàm Format(Dung / KQ(i, 1), "0.00%") trả về dạng chuỗi và tính toán trên sheet có thể khó hơn, mình nghỉ không cần dùng hàm format, và trên sheet tự định dạng tay vùng %
Cảm ơn anh @HieuCD đã xem bài và chỉ dẫn.
Phần lớn đang để định dạng Text anh ơi. Em thử lọ mọ một chút và sheet 3ON cũng chạy được công thức của anh rồi.
Cảm ơn anh @Hoàng Tuấn 868 đã xem bài và chỉ ra chỗ tôi còn thắc mắc. Nó chỉ là đơn gian là định dạng lại từ Text về Number hay General , Thế mà tôi cứ loay hoay mãi mà không biết nguyên nhân.
Trân trọng cảm ơn mọi người đã xem bài và tương tác.
 
Upvote 0
Bạn dùng Power query=> append query=>transform row header=> split column bài đúng/bài đã làm/Tổng bài ra 3 cột rồi sum và chia là được:
...
Trời đất. Người ta 3 năm mới động đến mọt lần. Bạn bảo người ta đi học bài à?

... lâu em không dùng đến hàm trong excel nên bị quên, ...

Xin code bấm một phát cho khỏe.
 
Upvote 0
Web KT

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

Back
Top Bottom