Cập nhật dữ liệu từ sheet này sang sheet khác (3 người xem)

Liên hệ QC

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

Gà Công Nghệ

Thành viên mới
Tham gia
11/8/15
Bài viết
808
Được thích
455
Xin chào anh chị trên diễn đàn, em có file excel xin nhờ anh chị hỗ trợ giùm: khi chọn số phiếu ở sheet IN thì toàn bộ dữ liệu ở sheet data sẽ cập nhật theo (số phiếu nào sẽ cập nhật theo số phiếu đó). Em xin cám anh chị nhiều.
 

File đính kèm

Xin chào anh chị trên diễn đàn, em có file excel xin nhờ anh chị hỗ trợ giùm: khi chọn số phiếu ở sheet IN thì toàn bộ dữ liệu ở sheet data sẽ cập nhật theo (số phiếu nào sẽ cập nhật theo số phiếu đó). Em xin cám anh chị nhiều.
Vẫn câu hỏi như của các bài tương tự: là nếu hộ gia đình nào đó có số nhân khẩu > 12 thì sao?
 
Vẫn câu hỏi như của các bài tương tự: là nếu hộ gia đình nào đó có số nhân khẩu > 12 thì sao?
Vâng, file này là mẫu của giáo viên điều tra có 12 hộ (theo mẫu) để vừa trang in. Em định nếu mà hộ có 13 thành viên thì số phiếu thêm dấu chấm phía sau. Anh có giải pháp nào hay hay chia sẻ em với.
Bài đã được tự động gộp:

Vâng, file này là mẫu của giáo viên điều tra có 12 hộ (theo mẫu) để vừa trang in. Em định nếu mà hộ có 13 thành viên thì số phiếu thêm dấu chấm phía sau. Anh có giải pháp nào hay hay chia sẻ em với.

Clink này bài 3 bạn Tuấn có báo hỏng rồi đó bạn Thuận.
 
Xin lỗi. Em đã cập nhật lại đường dẫn
Bài đã được tự động gộp:


Cảm ơn anh đã nhắc nhở nhé
File của mình mẫu có chút khác so với file trong đường dẫn bạn gửi, mình cũng không có rành về code nên mình cũng không biết chỉnh như thế nào để phù hợp với file của mình.
 
Vâng, file này là mẫu của giáo viên điều tra có 12 hộ (theo mẫu) để vừa trang in. Em định nếu mà hộ có 13 thành viên thì số phiếu thêm dấu chấm phía sau. Anh có giải pháp nào hay hay chia sẻ em với.
Trong khi chờ đợi các giải pháp khác tốt hơn, Bạn hãy thử xem cách tôi làm trong file đính kèm:
Khi mở Workbook Thì Danh sách các phiếu của các hộ đã được lấy vào cột AO/sh IN và cột AO này được đặt 1 nameRange có tên là SoPhieu=> NameRange này sẽ làm datavaildation của ô AA2.
Từ đây bạn chọn 1 số trong DataVali ở Ô AA2 sẽ thu được kết quả
Các dòng không có dữ liệu sẽ được ẩn đi
Hy vọng đúng ý.
 

File đính kèm

Trong khi chờ đợi các giải pháp khác tốt hơn, Bạn hãy thử xem cách tôi làm trong file đính kèm:
Khi mở Workbook Thì Danh sách các phiếu của các hộ đã được lấy vào cột AO/sh IN và cột AO này được đặt 1 nameRange có tên là SoPhieu=> NameRange này sẽ làm datavaildation của ô AA2.
Từ đây bạn chọn 1 số trong DataVali ở Ô AA2 sẽ thu được kết quả
Các dòng không có dữ liệu sẽ được ẩn đi
Hy vọng đúng ý.
Em có thêm dữ liệu vô cột Hộ nghèo TW thì khi tìm số phiếu vẫn hiện ra dữ liệu ô D5 ở sheet IN. Còn khi thêm dữ liệu vô cột Địa phương thì cột Hộ cận nghèo vẫn hiện dữ liệu như cột Địa phương ở sheet IN ô F5 và L5 cùng hiện ra dữ liệu (mặc dù cột hộ cận nghèo sheet data không có dữ liệu). Còn khi em thêm dữ liệu cột Hộ cận nghèo thì ô L5 sheet IN không thấy dữ liệu. Ở sheet IN những ô không có dữ liệu để trống khỏi ẩn với anh vì nếu có phát sinh thêm thành viên nào thì giáo viên viết tay vô đỡ mất công in ra trình ký lại. Nếu có thể thì anh có thể thêm tách sheet và gộp sheet hộ em với. Em xin cám ơn anh.
 
Em có thêm dữ liệu vô cột Hộ nghèo TW thì khi tìm số phiếu vẫn hiện ra dữ liệu ô D5 ở sheet IN. Còn khi thêm dữ liệu vô cột Địa phương thì cột Hộ cận nghèo vẫn hiện dữ liệu như cột Địa phương ở sheet IN ô F5 và L5 cùng hiện ra dữ liệu (mặc dù cột hộ cận nghèo sheet data không có dữ liệu). Còn khi em thêm dữ liệu cột Hộ cận nghèo thì ô L5 sheet IN không thấy dữ liệu. Ở sheet IN những ô không có dữ liệu để trống khỏi ẩn với anh vì nếu có phát sinh thêm thành viên nào thì giáo viên viết tay vô đỡ mất công in ra trình ký lại. Nếu có thể thì anh có thể thêm tách sheet và gộp sheet hộ em với. Em xin cám ơn anh.
Trên máy tôi Thì: Khi chạy code nó xóa bỏ các ô trong mảng Cll, rồi sau đó mới lấy dữ liệu vào các ô trong vùng từ dòng 10 dến dòng xxx.
Set Ws = Sheets("IN")
Ws.Range("A10:AA34").ClearContents
.......
Set Rng = Union(Range("D2"), Range("D3"), Range("D4"), Range("D5"), Range("F5"), Range("L3"), Range("L4:O4"), Range("L5"))
Rng.ClearContents
Còn lấy dữ liệu vào cas ô đó thì đây:
......
If t = 1 Then
For k = LBound(H) To UBound(H)
Ws.Range(Cll(k)) = Arr(i, H(k))
Next k
End If
.....
Đoạn ẩn các dòng thì đây
....
Ws.Rows(t + 10 & ":" & 34).EntireRow.Hidden = True
....
Tôi để đến dòng 34 là dự phòng hộ có trên 12 nhân khẩu (chứa được 25 nhân khẩu)

còn nếu để GV tự viết tây thêm thì xóa bớt các dòng chỉ để lại 12 dòng.
Xem file (đã có sửa lại code)
 

File đính kèm

dẠ
Trên máy tôi Thì: Khi chạy code nó xóa bỏ các ô trong mảng Cll, rồi sau đó mới lấy dữ liệu vào các ô trong vùng từ dòng 10 dến dòng xxx.
Set Ws = Sheets("IN")
Ws.Range("A10:AA34").ClearContents
.......
Set Rng = Union(Range("D2"), Range("D3"), Range("D4"), Range("D5"), Range("F5"), Range("L3"), Range("L4:O4"), Range("L5"))
Rng.ClearContents
Còn lấy dữ liệu vào cas ô đó thì đây:
......
If t = 1 Then
For k = LBound(H) To UBound(H)
Ws.Range(Cll(k)) = Arr(i, H(k))
Next k
End If
.....
Đoạn ẩn các dòng thì đây
....
Ws.Rows(t + 10 & ":" & 34).EntireRow.Hidden = True
....
Tôi để đến dòng 34 là dự phòng hộ có trên 12 nhân khẩu (chứa được 25 nhân khẩu)

còn nếu để GV tự viết tây thêm thì xóa bớt các dòng chỉ để lại 12 dòng.
Xem file (đã có sửa lại code)
Vâng, anh ơi, cột địa phương em thêm dữ liệu, lúc lọc ra ở sheet IN thì cột hộ cận nghèo cũng có dữ liệu giống cột địa phương. Còn lúc thêm dữ liệu cột hộ cận nghèo thì lọc ra ở sheet IN thì không thấy dữ liệu nào hết.
 
dẠ

Vâng, anh ơi, cột địa phương em thêm dữ liệu, lúc lọc ra ở sheet IN thì cột hộ cận nghèo cũng có dữ liệu giống cột địa phương. Còn lúc thêm dữ liệu cột hộ cận nghèo thì lọc ra ở sheet IN thì không thấy dữ liệu nào hết.
Tôi nhầm: Để giả quyết bạn hãy:
*P/án 1: Bạn thay dòng này
H = Array(32, 33, 29, 34, 35, 30, 31, 35)
thành
H = Array(32, 33, 29, 34, 35, 30, 31, 36)
*P/án 2
1-Đặt 1 Namerange có tên là Chung
2-ở ô Refers to bạn gán công thức này vào
=OFFSET(data!$AB$3;0;0;COUNTA(data!$AB$3:$AJ$9999);9)
3-Thêm 1 module có tên là Sub CongThuc()
Mã:
Sub CongThuc()
With Sheets("IN")
    .Range("D2").FormulaR1C1 = "=VLOOKUP(R2C27,Chung,5,0)"
    .Range("D3").FormulaR1C1 = "=VLOOKUP(R2C27,chung,6,0)"
    .Range("D4").FormulaR1C1 = "=VLOOKUP(R2C27,chung,2,0)"
    .Range("D5").FormulaR1C1 = "=VLOOKUP(R2C27,chung,7,0)"
    .Range("F5").FormulaR1C1 = "=VLOOKUP(R2C27,chung,8,0)"
    .Range("L3").FormulaR1C1 = "=VLOOKUP(R2C27,chung,3,0)"
    .Range("L4").FormulaR1C1 = "=VLOOKUP(R2C27,chung,4,0)"
    .Range("L5").FormulaR1C1 = "=VLOOKUP(R2C27,chung,9,0)"
End With
End Sub
4-Thay code của Sub PhieuDieuTraPCGD() thành
Mã:
Sub PhieuDieuTraPCGD()
Dim i&, j&, t&, k&, Lr&, R&
Dim Arr(), KQ(), S As Variant
Dim Sh As Worksheet, Ws As Worksheet, Rng As Range
Dim Ma
Set Sh = Sheets("data")
Lr = Sh.Cells(Rows.Count, "C").End(xlUp).Row
Arr = Sh.Range("A4:AJ" & Lr).Value
R = UBound(Arr)
Set Ws = Sheets("IN")
Ws.Range("A10:AA21").ClearContents
Ma = Ws.[AA2]
ReDim KQ(1 To 12, 1 To 26)
t = 0
For i = 1 To R
    If Arr(i, 28) = Ma Then
        t = t + 1: KQ(t, 1) = t
        For j = 2 To 26
            KQ(t, j) = Arr(i, j)
        Next j
    End If
Next i
If t Then
Ws.Range("A10").Resize(t, 26) = KQ
Call CongThuc
End If
End Sub
6- Thử thay đổi ô AA2
7- Kiểm tra dự liệu đã cho ra như ý chưa?
8- Lúc này bạn có thể vô hiệu (tích dấu nháy đơn ("'") dòng code Call CongThuc do công thức đã gán vào các ô rồi.
Bài này có thể phát triển thêm chút nữa là in tự động hàng loạt theo tùy chọn (toàn bộ, phiếu rời rạc không liên tục, hoặc từng phiếu 1)
 
Lần chỉnh sửa cuối:
v
Tôi nhầm: Để giả quyết bạn hãy:
*P/án 1: Bạn thay dòng này
H = Array(32, 33, 29, 34, 35, 30, 31, 35)
thành
H = Array(32, 33, 29, 34, 35, 30, 31, 36)
*P/án 2
1-Đặt 1 Namerange có tên là Chung
2-ở ô Refers to bạn gán công thức này vào
=OFFSET(data!$AB$3;0;0;COUNTA(data!$AB$3:$AJ$9999);9)
3-Thêm 1 module có tên là Sub CongThuc()
Mã:
Sub CongThuc()
With Sheets("IN")
    .Range("D2").FormulaR1C1 = "=VLOOKUP(R2C27,Chung,5,0)"
    .Range("D3").FormulaR1C1 = "=VLOOKUP(R2C27,chung,6,0)"
    .Range("D4").FormulaR1C1 = "=VLOOKUP(R2C27,chung,2,0)"
    .Range("D5").FormulaR1C1 = "=VLOOKUP(R2C27,chung,7,0)"
    .Range("F5").FormulaR1C1 = "=VLOOKUP(R2C27,chung,8,0)"
    .Range("L3").FormulaR1C1 = "=VLOOKUP(R2C27,chung,3,0)"
    .Range("L4").FormulaR1C1 = "=VLOOKUP(R2C27,chung,4,0)"
    .Range("L5").FormulaR1C1 = "=VLOOKUP(R2C27,chung,9,0)"
End With
End Sub
4-Thay code của Sub PhieuDieuTraPCGD() thành
Mã:
Sub PhieuDieuTraPCGD()
Dim i&, j&, t&, k&, Lr&, R&
Dim Arr(), KQ(), S As Variant
Dim Sh As Worksheet, Ws As Worksheet, Rng As Range
Dim Ma
Set Sh = Sheets("data")
Lr = Sh.Cells(Rows.Count, "C").End(xlUp).Row
Arr = Sh.Range("A4:AJ" & Lr).Value
R = UBound(Arr)
Set Ws = Sheets("IN")
Ws.Range("A10:AA21").ClearContents
Ma = Ws.[AA2]
ReDim KQ(1 To 12, 1 To 26)
t = 0
For i = 1 To R
    If Arr(i, 28) = Ma Then
        t = t + 1: KQ(t, 1) = t
        For j = 2 To 26
            KQ(t, j) = Arr(i, j)
        Next j
    End If
Next i
If t Then
Ws.Range("A10").Resize(t, 26) = KQ
Call CongThuc
End If
End Sub
6- Thử thay đổi ô AA2
7- Kiểm tra dự liệu đã cho ra như ý chưa?
8- Lúc này bạn có thể vô hiệu (tích dấu nháy đơn ("'") dòng code Call CongThuc do công thức đã gán vào các ô rồi.
Bài này có thể phát triển thêm chút nữa là in tự động hàng loạt theo tùy chọn (toàn bộ, phiếu rời rạc không liên tục, hoặc từng phiếu 1)
Vâng, em thử phương án 1 thì không có lỗi. Phương án 2 ý 1 và ý 2 em cũng chưa rành nên em không thử phương án 2. Còn việc phát triển thêm cách in như anh nói thì em không có rành về code nên cũng không biết phát triển ạ.
 

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

Back
Top Bottom