Tìm địa chỉ ô với 2đk và chuyển thành links (3 người xem)

Liên hệ QC

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

Tôi tuân thủ nội quy khi đăng bài

vova2209

Thành viên tích cực
Tham gia
5/4/17
Bài viết
835
Được thích
112
Giới tính
Nam
Nghề nghiệp
Đường bộ
Em chào Anh Chị!
Em có bảng dữ liệu như ảnh dưới. Công việc em làm là phải links cộng giá trị theo 2 điều kiện ĐK1 "Ngày nghiệm thu - cột AR"; ĐK2 "Mã PK - cột C" . Dữ liệu lớn thì ngồi cộng vào bằng thủ công rất lâu và dễ sai sót nên Em nhờ Anh Chị giúp em sử lý bảng dữ liệu. Em cảm ơn

Ví dụ dưới Kết quả trả về:
- Tìm kiếm theo 2 điều kiện: ĐK1 "Ngày nghiệm thu - cột AR"; ĐK2 "Mã PK - cột C"
1. Theo 2 ĐK trên tìm được 6 vị trí của ngày 6/10/22
2. Khi tìm được 6 vị trí thì sẽ chuyển thành links =S19+S30+S31+S32+S40+S42


test2.png
 

File đính kèm

Bạn có thể dùng hàm SUMIFS nếu Excel của bạn trên 2016 hoặc hàm SUMPRODUCT. Còn nếu muốn như kiểu cộng tay như trên thì có thể dùng VBA.
 
Upvote 0
Em chào Anh Chị!
Em có bảng dữ liệu như ảnh dưới. Công việc em làm là phải links cộng giá trị theo 2 điều kiện ĐK1 "Ngày nghiệm thu - cột AR"; ĐK2 "Mã PK - cột C" . Dữ liệu lớn thì ngồi cộng vào bằng thủ công rất lâu và dễ sai sót nên Em nhờ Anh Chị giúp em sử lý bảng dữ liệu. Em cảm ơn

Ví dụ dưới Kết quả trả về:
- Tìm kiếm theo 2 điều kiện: ĐK1 "Ngày nghiệm thu - cột AR"; ĐK2 "Mã PK - cột C"
1. Theo 2 ĐK trên tìm được 6 vị trí của ngày 6/10/22
2. Khi tìm được 6 vị trí thì sẽ chuyển thành links =S19+S30+S31+S32+S40+S42


View attachment 305193
Tham khảo code sau:

Mã:
Sub LinkCell()
Dim i&, Lr&, R&, C&, Col&
With Sheets("VoVa")
    Lr = .Range("A" & Rows.Count).End(xlUp).Row
    Col = .Cells(1, Columns.Count).End(xlToLeft).Column
    For C = 14 To .Range("BM" & Rows.Count).End(xlUp).Row
        For R = 67 To Col
            .Cells(C, R).ClearContents
            For i = 14 To Lr
                If .Range("C" & i) = Cells(C, 66) And .Range("AR" & i) = Cells(1, R) Then
                     If .Cells(C, R) = Empty Then
                        .Cells(C, R) = Range("S" & i).Address
                     Else
                        .Cells(C, R) = .Cells(C, R) & "+" & Range("S" & i).Address
                    End If
                End If
            Next i
            If .Cells(C, R) <> Empty Then .Cells(C, R) = "=" & .Cells(C, R) '  Mid(.Range("BT16"), 2, Len(.Range("BT16")) - 1)
        Next R
    Next C
End With
End Sub
 
Upvote 0
Trắng trơn anh ơi. .
1730466490001.png
Xem file dính kèm này.
Code có thay 1 chút Từ .range("S"&i) Thành "s"&i
Hình như anh gửi nhầm file ạ.
1730466726555.png
Bài đã được tự động gộp:

Xem file dính kèm này.
Code có thay 1 chút Từ .range("S"&i) Thành "s"&i
Cũng vẫn không thấy gì anh ạ.
1730466979829.png
 
Lần chỉnh sửa cuối:
Upvote 0
Trắng trơn anh ơi. .
View attachment 305207

Hình như anh gửi nhầm file ạ.
View attachment 305209
Tôi Up nhầm nên xóa đi để tải lại file khác.
Trắng trơn anh ơi. .
View attachment 305207

Hình như anh gửi nhầm file ạ.
View attachment 305209
Bài đã được tự động gộp:


Cũng vẫn không thấy gì anh ạ.
View attachment 305210
Anh xóa hết dữ liệu cũ (vùng BO14:CD15) và chạy thử code xem sao
 
Upvote 0
Sao không thấy chuyển thành Links anh nhỉ.
Trước hết tôi xin được thành thật nhận xét về mình là tôi không được tinh anh như người ta, các kỹ năng đọc -hiểu luôn ở dưới trung bình. Đó là điều bộc bạch chân thành.

Tôi đọc phần này "...Khi tìm được 6 vị trí thì sẽ chuyển thành links =S19+S30+S31+S32+S40+S42....." và hiểu là do ".... Dữ liệu lớn thì ngồi cộng vào bằng thủ công rất lâu và dễ sai sót nhiều ..." nên bạn ấy không muốn đi dò tìm xem 2 ĐK ấy trùng vào ô nào để viết công thức cho các Ô trên bảng tính (BN14:CD....) nên đã làm t\như ý tôi hiểu. Rất có thể không đúng ý của chủ thớt, nhưng nếu đúng thì đã giảm tải rất nhiều công việc ngồi tính toán cho từng điều kiện như trong file (mẫu là 2 dòng nhưng có thể còn rất nhiều dòng khác nữa).
Khi thấy anh tương tác, tôi hy vọng sẽ được thấy được code sịn anh viết theo đúng tinh thần "chuyển thành Links".

Với tinh thần cầu thị, tôi có 1 đề nghị với anh thế này: Nếu anh đã có code xin được anh chia sẻ để tôi được khai sáng và các bạn khác có tài liệu học tập tham khảo.
Trân trọng cảm ơn anh.
 
Upvote 0
Trước hết tôi xin được thành thật nhận xét về mình là tôi không được tinh anh như người ta, các kỹ năng đọc -hiểu luôn ở dưới trung bình. Đó là điều bộc bạch chân thành.

Tôi đọc phần này "...Khi tìm được 6 vị trí thì sẽ chuyển thành links =S19+S30+S31+S32+S40+S42....." và hiểu là do ".... Dữ liệu lớn thì ngồi cộng vào bằng thủ công rất lâu và dễ sai sót nhiều ..." nên bạn ấy không muốn đi dò tìm xem 2 ĐK ấy trùng vào ô nào để viết công thức cho các Ô trên bảng tính (BN14:CD....) nên đã làm t\như ý tôi hiểu. Rất có thể không đúng ý của chủ thớt, nhưng nếu đúng thì đã giảm tải rất nhiều công việc ngồi tính toán cho từng điều kiện như trong file (mẫu là 2 dòng nhưng có thể còn rất nhiều dòng khác nữa).
Khi thấy anh tương tác, tôi hy vọng sẽ được thấy được code sịn anh viết theo đúng tinh thần "chuyển thành Links".

Với tinh thần cầu thị, tôi có 1 đề nghị với anh thế này: Nếu anh đã có code xin được anh chia sẻ để tôi được khai sáng và các bạn khác có tài liệu học tập tham khảo.
Trân trọng cảm ơn anh.
Ồ, em chưa hiểu ý của bạn ấy là Links đến đâu, cứ tưởng anh hiểu rồi nên mới hỏi anh, anh ạ.
 
Upvote 0
Bạn có thể dùng hàm SUMIFS nếu Excel của bạn trên 2016 hoặc hàm SUMPRODUCT. Còn nếu muốn như kiểu cộng tay như trên thì có thể dùng VBA.
vâng sumifs 2dk thì mình cũng biết rồi. vì lý do người ta bắt mình links trực tiếp đẻ ctrl móc kiểm tra số liệu
Bài đã được tự động gộp:

Tham khảo code sau:

Mã:
Sub LinkCell()
Dim i&, Lr&, R&, C&, Col&
With Sheets("VoVa")
    Lr = .Range("A" & Rows.Count).End(xlUp).Row
    Col = .Cells(1, Columns.Count).End(xlToLeft).Column
    For C = 14 To .Range("BM" & Rows.Count).End(xlUp).Row
        For R = 67 To Col
            .Cells(C, R).ClearContents
            For i = 14 To Lr
                If .Range("C" & i) = Cells(C, 66) And .Range("AR" & i) = Cells(1, R) Then
                     If .Cells(C, R) = Empty Then
                        .Cells(C, R) = Range("S" & i).Address
                     Else
                        .Cells(C, R) = .Cells(C, R) & "+" & Range("S" & i).Address
                    End If
                End If
            Next i
            If .Cells(C, R) <> Empty Then .Cells(C, R) = "=" & .Cells(C, R) '  Mid(.Range("BT16"), 2, Len(.Range("BT16")) - 1)
        Next R
    Next C
End With
End Sub
Em cảm ơn! em vừa chạy thấy đúng như đề bài rồi, để e chạy trên bảng giữ liệu lớn xem
Bài đã được tự động gộp:

Xem file dính kèm này.
Code có thay 1 chút Từ .range("S"&i) Thành "s"&i
Bấm code cái nhìn nó chạy lấy dữ liệu phê thật. em xin chân thành cảm ơn. Anh chị đi đâu có qua Tuyên Quang em mời cốc Bia nhé (0911220986) hihi
 
Lần chỉnh sửa cuối:
Upvote 0
Trước hết tôi xin được thành thật nhận xét về mình là tôi không được tinh anh như người ta, các kỹ năng đọc -hiểu luôn ở dưới trung bình. Đó là điều bộc bạch chân thành.

Tôi đọc phần này "...Khi tìm được 6 vị trí thì sẽ chuyển thành links =S19+S30+S31+S32+S40+S42....." và hiểu là do ".... Dữ liệu lớn thì ngồi cộng vào bằng thủ công rất lâu và dễ sai sót nhiều ..." nên bạn ấy không muốn đi dò tìm xem 2 ĐK ấy trùng vào ô nào để viết công thức cho các Ô trên bảng tính (BN14:CD....) nên đã làm t\như ý tôi hiểu. Rất có thể không đúng ý của chủ thớt, nhưng nếu đúng thì đã giảm tải rất nhiều công việc ngồi tính toán cho từng điều kiện như trong file (mẫu là 2 dòng nhưng có thể còn rất nhiều dòng khác nữa).
Khi thấy anh tương tác, tôi hy vọng sẽ được thấy được code sịn anh viết theo đúng tinh thần "chuyển thành Links".

Với tinh thần cầu thị, tôi có 1 đề nghị với anh thế này: Nếu anh đã có code xin được anh chia sẻ để tôi được khai sáng và các bạn khác có tài liệu học tập tham khảo.
Trân trọng cảm ơn anh.
Anh viết code đúng với em nhờ anh chị đấy ạ. Em dùng sumifs lấy 2 3 điều kiện thì cũng làm được. Nhưng vì lý do yêu cầu của bên kiểm soát dữ liệu của mình, nên họ bắt links = thủ công ạ.
Em dùng hàm ="='" & CELL("filename") & "'!" & ADDRESS(ROW(INDEX($A$14:$AR$85;MATCH(BT1;AR14:AR85;0);COLUMN($S$1)));COLUMN($S$1)) - thì chỉ lấy được mỗi 1 địa chỉ ô
 
Upvote 0

File đính kèm

Upvote 0
Bạn thử code sau

Mã:
Sub Links_KLQuyetToan()
    Dim i&, Lr&, R&, C&, Col&, kl&
    Lr = Sheets("VoVa").Range("A" & Rows.Count).End(xlUp).Row
    Col = Sheets("PKhai").Cells(9, Columns.Count).End(xlToLeft).Column
    For R = 9 To Col
        For C = 11 To Sheets("PKhai").Range("B" & Rows.Count).End(xlUp).Row
            kl = WorksheetFunction.SumIfs(Sheets("VoVa").Range("S14:S" & Lr), Sheets("VoVa").Range("C14:C" & Lr), Sheets("PKhai").Cells(C, 2))
            If kl > 0 Then
                Sheets("PKhai").Cells(C, R).ClearContents
                For i = 14 To Lr
                    If Sheets("VoVa").Range("C" & i) = Sheets("PKhai").Cells(C, 2) And Sheets("VoVa").Range("AR" & i) = Sheets("PKhai").Cells(9, R) Then
                        If Sheets("PKhai").Cells(C, R) = Empty Then
                            Sheets("PKhai").Cells(C, R) = "VoVa!S" & i
                        Else
                            Sheets("PKhai").Cells(C, R) = Sheets("PKhai").Cells(C, R) & "+VoVa!S" & i
                        End If
                    End If
                Next i
                If Sheets("PKhai").Cells(C, R) <> Empty Then Sheets("PKhai").Cells(C, R) = "=" & Sheets("PKhai").Cells(C, R)
            End If
        Next C
    Next R
End Sub
 
Upvote 0
Bạn thử code sau

Mã:
Sub Links_KLQuyetToan()
    Dim i&, Lr&, R&, C&, Col&, kl&
    Lr = Sheets("VoVa").Range("A" & Rows.Count).End(xlUp).Row
    Col = Sheets("PKhai").Cells(9, Columns.Count).End(xlToLeft).Column
    For R = 9 To Col
        For C = 11 To Sheets("PKhai").Range("B" & Rows.Count).End(xlUp).Row
            kl = WorksheetFunction.SumIfs(Sheets("VoVa").Range("S14:S" & Lr), Sheets("VoVa").Range("C14:C" & Lr), Sheets("PKhai").Cells(C, 2))
            If kl > 0 Then
                Sheets("PKhai").Cells(C, R).ClearContents
                For i = 14 To Lr
                    If Sheets("VoVa").Range("C" & i) = Sheets("PKhai").Cells(C, 2) And Sheets("VoVa").Range("AR" & i) = Sheets("PKhai").Cells(9, R) Then
                        If Sheets("PKhai").Cells(C, R) = Empty Then
                            Sheets("PKhai").Cells(C, R) = "VoVa!S" & i
                        Else
                            Sheets("PKhai").Cells(C, R) = Sheets("PKhai").Cells(C, R) & "+VoVa!S" & i
                        End If
                    End If
                Next i
                If Sheets("PKhai").Cells(C, R) <> Empty Then Sheets("PKhai").Cells(C, R) = "=" & Sheets("PKhai").Cells(C, R)
            End If
        Next C
    Next R
End Sub
Cảm ơn anh nhé! code chạy ok rồi. Chúc anh chị 1 ngày cuối tuần vui vẻ
 
Upvote 0
Bạn thử code sau

Mã:
Sub Links_KLQuyetToan()
    Dim i&, Lr&, R&, C&, Col&, kl&
    Lr = Sheets("VoVa").Range("A" & Rows.Count).End(xlUp).Row
    Col = Sheets("PKhai").Cells(9, Columns.Count).End(xlToLeft).Column
    For R = 9 To Col
        For C = 11 To Sheets("PKhai").Range("B" & Rows.Count).End(xlUp).Row
            kl = WorksheetFunction.SumIfs(Sheets("VoVa").Range("S14:S" & Lr), Sheets("VoVa").Range("C14:C" & Lr), Sheets("PKhai").Cells(C, 2))
            If kl > 0 Then
                Sheets("PKhai").Cells(C, R).ClearContents
                For i = 14 To Lr
                    If Sheets("VoVa").Range("C" & i) = Sheets("PKhai").Cells(C, 2) And Sheets("VoVa").Range("AR" & i) = Sheets("PKhai").Cells(9, R) Then
                        If Sheets("PKhai").Cells(C, R) = Empty Then
                            Sheets("PKhai").Cells(C, R) = "VoVa!S" & i
                        Else
                            Sheets("PKhai").Cells(C, R) = Sheets("PKhai").Cells(C, R) & "+VoVa!S" & i
                        End If
                    End If
                Next i
                If Sheets("PKhai").Cells(C, R) <> Empty Then Sheets("PKhai").Cells(C, R) = "=" & Sheets("PKhai").Cells(C, R)
            End If
        Next C
    Next R
End Sub
Anh ơi! có 1 vấn đề là bảng dữ liệu lớn chạy hơi lâu. Anh xem giúp em sửa lại code xác định những ngày nào có dữ liệu thì mới chèn, không là ngày nào cũng chạy code qua nên với bảng dữ liệu lớn thì chạy lâu quá ạ
Capture.JPG
 

File đính kèm

Upvote 0
Bạn sửa công thức WorksheetFunction.SumIfs thêm 1 điều kiện theo ngày nữa
 
Upvote 0
Web KT

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

Back
Top Bottom