Tính Tổng giá trị đối xứng (1 người xem)

Liên hệ QC

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

switch93

Thành viên chính thức
Tham gia
11/8/15
Bài viết
51
Được thích
0
Chào các bác diễn đàn GPE!
Em có bài toán tính tổng của 2 trị đối xứng khi cùng chứa giá trị.
Bài toán như sau:
B1: xác định dữ liệu đối xứng và thống kê theo thứ tự như bảng dữ liệu.
B2: xác định giá trị và tổng 2 những cùng có chứa giá trị, còn cả ô có , ô không của 1 MH thì loại bỏ.
B3: cho ra bản giá trị như file tại sheet2.
Em có gửi file dính kèm mọi người coi qua.
Cảm ơn GPE!
 

File đính kèm

muốn là có hết
Mã:
Public Sub hello()
Dim Dic As Object, arr As Variant, rsArr As Variant, r As Long, k As Long, c As Integer
Dim lPos As Integer, tempItem As String
arr = Sheet1.Range("A2:H" & Sheet1.Range("A50000").End(xlUp).Row).Value
Set Dic = CreateObject("Scripting.Dictionary")
ReDim rsArr(1 To UBound(arr), 1 To 9)
For r = 1 To UBound(arr) Step 1
    If Not Dic.exists(UCase(arr(r, 1))) Then
        k = k + 1
        Dic.Add UCase(arr(r, 1)), k & "," & r
        rsArr(k, 1) = arr(r, 1)
    Else
        tempItem = Dic(UCase(arr(r, 1)))
        lPos = InStr(tempItem, ",")
        rsArr(Left(tempItem, lPos - 1), 2) = arr(r, 1)
        For c = 2 To 8 Step 1
            If Not arr(Mid(tempItem, lPos + 1), c) = Empty And Not arr(r, c) = Empty Then
                rsArr(Left(tempItem, lPos - 1), c + 1) = arr(r, c) + arr(Mid(tempItem, lPos + 1), c)
            End If
        Next
    End If
Next
Sheet2.Range("A2").Resize(k + 20, 9).ClearContents
Sheet2.Range("A2").Resize(k, 9).Value = rsArr
End Sub
 
Upvote 0
Chào bác doveandrose !
em muốn mà không được bác ah?
em chạy tới chạy lui các file lớn có bé có. Chạy File không ổn bác ah!
Bác xem coi lại giúp em! em có gửi file thử nghiệm đây.
 

File đính kèm

Upvote 0
Vậy mà cũng có người đã hiểu đề bài, hay thật sự đó nha!

Như mình thì mình chả hiểu làm sao ở trang tính 'TH1' lại nhận những giá trị thống kê như vậy.
Tác giả chịu khó giải thích tại sao có con số 3 ở ô [C2] dùm cái & con số 2 tại [g2] nữa;
Được vậy rất xin cảm ơn!
 
Upvote 0
Chào bác doveandrose !
em muốn mà không được bác ah?
em chạy tới chạy lui các file lớn có bé có. Chạy File không ổn bác ah!
Bác xem coi lại giúp em! em có gửi file thử nghiệm đây.

bạn đưa file đó thì code không chạy là đương nhiên . đâu có oan ức gì .
theo thông thường thì 1 bảng tính có số cột cố định . nếu số cột không biết trước gọi là bất thường . sự bất thường đó bạn phải đề cập trong bài viết . đằng này bạn không nói ????
#1 bạn đưa lên chỉ có các kí tự A B C , và a b c => tôi lầm tưởng rằng cứ giống nhau về kí tự alphabet chỉ khác về in hoa thường thì gọi là đối xứng . nay bạn đưa file lên đủ hết các thể loại chữ , số lẫn lộn . vậy bạn phải trả lời . thế nào là đối xứng ?
 
Upvote 0
Thử code này xem sao
Mã:
Public Sub Doi_Xung_Ngang()
Dim DL, kq(), r As Long, rw As Long, c As Long

With Sheet1
rw = .UsedRange.Rows.Count
c = .UsedRange.Columns.Count
DL = .Range(.Cells(2, 1), .Cells(rw, c))
End With

rw = UBound(DL) / 2
ReDim kq(1 To rw + 1, 1 To UBound(DL, 2) + 1)

For r = 2 To rw + 1 
kq(r, 1) = DL(r - 1, 1): kq(r, 2) = DL(r + rw - 1, 1)

For c = 2 To UBound(DL, 2)
kq(1, c + 1) = c - 1
If DL(r - 1, c) <> "" And DL(r + rw - 1, c) <> "" Then kq(r, c + 1) = DL(r - 1, c) + DL(r + rw - 1, c)
Next c
Next r

Sheet2.UsedRange.Clear
Sheet2.Range("A1").Resize(UBound(kq), UBound(kq, 2)) = kq
Sheet2.UsedRange.ColumnWidth = 3
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Vậy mà cũng có người đã hiểu đề bài, hay thật sự đó nha!

Như mình thì mình chả hiểu làm sao ở trang tính 'TH1' lại nhận những giá trị thống kê như vậy.
Tác giả chịu khó giải thích tại sao có con số 3 ở ô [C2] dùm cái & con số 2 tại [g2] nữa;
Được vậy rất xin cảm ơn!
Chào bác HYen17!
Về điều kiện em xin nêu rõ. nếu đã đối xứng theo cột là phải dựa các MH trên cột chia đôi lấy đối xứng theo thứ tự như file mô phỏng.
Điều kiện thứ 2: chỉ tính tổng khi cả 2 đều chứa giá trị, còn nếu ô có ô không ta không tính.
theo đó em tính ra như vậy.
tại ô C2 là tổng giá trị của A và a có chứa giá trị 2 và 1
tại ô G2 là tổng giá trị của A và a có chứa giá trị 1 và 1
Bác xem có gì không rõ. cho em biết.
 
Upvote 0
bạn đưa file đó thì code không chạy là đương nhiên . đâu có oan ức gì .
theo thông thường thì 1 bảng tính có số cột cố định . nếu số cột không biết trước gọi là bất thường . sự bất thường đó bạn phải đề cập trong bài viết . đằng này bạn không nói ????
#1 bạn đưa lên chỉ có các kí tự A B C , và a b c => tôi lầm tưởng rằng cứ giống nhau về kí tự alphabet chỉ khác về in hoa thường thì gọi là đối xứng . nay bạn đưa file lên đủ hết các thể loại chữ , số lẫn lộn . vậy bạn phải trả lời . thế nào là đối xứng ?
Em xin lỗi bác đã không chỉ rõ điều kiện để tính nên bác nhầm. Lỗi này do em sai.
bài toán có 2 điều kiện cơ bản để lọc và tính tổng giá trị.
Điều kiện 1: lấy đối xứng các giá trị theo thứ tự(theo cột thì chia 2 lấy theo thứ tự ấy ghép lại)
Điều kiện 2: Chỉ tính tổng của những Trị có chứ giá trị, còn ô có ô không của trị số ta không tính.
Cảm ơn bác doveandrose !
 
Upvote 0
Web KT

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

Back
Top Bottom