Giúp tìm dữ liệu theo ngày tháng từ sheet khác (2 người xem)

Liên hệ QC

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

Dungnt.d1h

Thành viên mới
Tham gia
23/12/21
Bài viết
6
Được thích
0
Chào ad và các bạn. Mình là thành viên mới, rất mong được ad và các bạn hỗ trợ hướng dẫn mình một trường hợp fill dữ liệu theo từng dòng trong exel, cụ thể như sau :
Mình có sheet 2 là công thức tính toán phụ thuộc vào giá trị ngày được nhập vào. Sheet 3 là data có ngày tháng khác nhau trên mỗi dòng. Trên cơ sở giá trị ngày tháng này sẽ trả về kết quả tính toán được từ sheet 2. File ví dụ mình đính kèm.
Vậy mình phải làm thế nào trong exel hay là phải viết code vb. Rất mong được ad và các bạn giúp đỡ.
Cảm ơn các bạn nhiều !
 

File đính kèm

Chào ad và các bạn. Mình là thành viên mới, rất mong được ad và các bạn hỗ trợ hướng dẫn mình một trường hợp fill dữ liệu theo từng dòng trong exel, cụ thể như sau :
Mình có sheet 2 là công thức tính toán phụ thuộc vào giá trị ngày được nhập vào. Sheet 3 là data có ngày tháng khác nhau trên mỗi dòng. Trên cơ sở giá trị ngày tháng này sẽ trả về kết quả tính toán được từ sheet 2. File ví dụ mình đính kèm.
Vậy mình phải làm thế nào trong exel hay là phải viết code vb. Rất mong được ad và các bạn giúp đỡ.
Cảm ơn các bạn nhiều !
Bạn thử dùng hàm Vlookup xem sao.
B3=VLOOKUP(A3;Sheet2!A$4:D$4000;2;0)
Enter và fillDown.
 
Chào ad và các bạn. Mình là thành viên mới, rất mong được ad và các bạn hỗ trợ hướng dẫn mình một trường hợp fill dữ liệu theo từng dòng trong exel, cụ thể như sau :
Mình có sheet 2 là công thức tính toán phụ thuộc vào giá trị ngày được nhập vào. Sheet 3 là data có ngày tháng khác nhau trên mỗi dòng. Trên cơ sở giá trị ngày tháng này sẽ trả về kết quả tính toán được từ sheet 2. File ví dụ mình đính kèm.
Vậy mình phải làm thế nào trong exel hay là phải viết code vb. Rất mong được ad và các bạn giúp đỡ.
Cảm ơn các bạn nhiều !
Chào bạn,
Tôi sửa tiêu đề lại theo yêu cầu trong bài "Giúp tìm dữ liệu theo ngày tháng từ sheet khác". Bạn cần đặt tiêu đề rõ ràng để bài viết có giá trị sử dụng cho mọi người. (Tham khảo thêm Nội quy diễn đàn)
 
Bạn thử dùng hàm Vlookup xem sao.
B3=VLOOKUP(A3;Sheet2!A$4:D$4000;2;0)
Enter và fillDown.
Vâng, mong muốn của mình là công thức ở sheet2 sẽ căn cứ vào giá trị ngày theo từng dòng trong sheet3 để tính và trả về kết quả tương ứng ah. Nếu dùng vlookup như trên thì vẫn chưa được bạn ah. Thanks bạn
Bài đã được tự động gộp:

Chào bạn,
Tôi sửa tiêu đề lại theo yêu cầu trong bài "Giúp tìm dữ liệu theo ngày tháng từ sheet khác". Bạn cần đặt tiêu đề rõ ràng để bài viết có giá trị sử dụng cho mọi người. (Tham khảo thêm Nội quy diễn đàn)
Vâng, cảm ơn ad và mong ad hỗ trợ giúp mình. Thanks ad.
 
" ....mong muốn của mình là ''công thức ở sheet2 sẽ căn cứ vào giá trị ngày theo từng dòng trong sheet3 để tính và trả về kết quả tương ứng..."
với Đề bài ở # 1 B3/Sheet3=" Trả về dữ liệu tính toán được từ Sheet2 theo biến ngày của bản ghi" liệu có vấn đề gì không? Hay là tôi không hiểu ý bạn.
Tốt nhất là trong file đính kèm bạn hãy cho khoảng 15-20 dòng dữ liệu ở Sheet2, và 1-2 dòng kết quả mong muốn ở Sheet3.
 
với Đề bài ở # 1 B3/Sheet3=" Trả về dữ liệu tính toán được từ Sheet2 theo biến ngày của bản ghi" liệu có vấn đề gì không? Hay là tôi không hiểu ý bạn.
Tốt nhất là trong file đính kèm bạn hãy cho khoảng 15-20 dòng dữ liệu ở Sheet2, và 1-2 dòng kết quả mong muốn ở Sheet3.
Vâng đúng vậy bạn. Dữ liệu được tính toán ở sheet2 theo từng biến ngày của sheet3 sau đó trả về theo từng bản ghi trên sheet3 ah.
 
Vâng đúng vậy bạn. Dữ liệu được tính toán ở sheet2 theo từng biến ngày của sheet3 sau đó trả về theo từng bản ghi trên sheet3 ah.
"...Dữ liệu được tính toán ở sheet2 theo từng biến ngày của sheet3 sau đó trả về theo từng bản ghi trên sheet3..." = ??????

"Tốt nhất là trong file đính kèm bạn hãy cho khoảng 15-20 dòng dữ liệu ở Sheet2, và 1-2 dòng kết quả mong muốn ở Sheet3."
=0
 
Mình mò và code được rồi, vẫn phải dùng vb, cảm ơn các bạn nhé. Lát mình copy đoạn code lên để mọi người cùng tham khảo. Thanks
 
Mình gửi đoạn code vb. Nó có tác dụng lấy biến của từng dòng dữ liệu nhập vào sheet khác để tính toán ra kết quả rồi trả lại cho dòng dữ liệu tương ứng. Trường hợp này mình dùng để lấy kết quả tính toán từ một modul rồi trả về cơ sở dữ liệu. Mong nó hữu ích cho những ai cần.
Sub filldata()
Dim i As Integer
For i = 3 To 10
Sheets("Sheet1").Range("A4").Value = Sheets("Sheet2").Range("A" & i)
Sheets("Sheet2").Range("B" & i).Value = Sheets("Sheet1").Range("B4")
Next i
End Sub
 
Mình gửi đoạn code vb. Nó có tác dụng lấy biến của từng dòng dữ liệu nhập vào sheet khác để tính toán ra kết quả rồi trả lại cho dòng dữ liệu tương ứng. Trường hợp này mình dùng để lấy kết quả tính toán từ một modul rồi trả về cơ sở dữ liệu. Mong nó hữu ích cho những ai cần.
Sub filldata()
Dim i As Integer
For i = 3 To 10
Sheets("Sheet1").Range("A4").Value = Sheets("Sheet2").Range("A" & i)
Sheets("Sheet2").Range("B" & i).Value = Sheets("Sheet1").Range("B4")
Next i
End Sub
Khó hiểu bỏ bố. Ai mà dùng nổi.
Thực tế code trên dùng vòng lặp một cách bừa bãi. Có thể thay thế gọn gàng và rỗ rệt như sau:
Sub t()
Sheets("Sheet1").Range("A4").Value = Sheets("Sheet2").Range("A10")
Sheets("Sheet2").Range("B3:B10").Value = Sheets("Sheet1").Range("B4")
End Sub

Trừ phi tác giả code dùng kỹ thuật tham chiếu vòng. Sheet2.Range("A3:A10") chứa công thức tham chiếu đến Sheet1.Range("A4"). Tương tự vậy cho Sheet1.Range("B4"). Tự phương pháp tham chiếu vòng đã là nguy hiểm rồi. Khỏi cần bàn tới code.
 
Lần chỉnh sửa cuối:
Mình gửi đoạn code vb. Nó có tác dụng lấy biến của từng dòng dữ liệu nhập vào sheet khác để tính toán ra kết quả rồi trả lại cho dòng dữ liệu tương ứng. Trường hợp này mình dùng để lấy kết quả tính toán từ một modul rồi trả về cơ sở dữ liệu. Mong nó hữu ích cho những ai cần.
Sub filldata()
Dim i As Integer
For i = 3 To 10
Sheets("Sheet1").Range("A4").Value = Sheets("Sheet2").Range("A" & i)
Sheets("Sheet2").Range("B" & i).Value = Sheets("Sheet1").Range("B4")
Next i
End Sub
Nếu đã vậy thì sao không là: nếu i = dongcuoi
Sheets("Sheet1").Range("A4").Value = Sheets("Sheet2").Range("A"& dongcuoi) và
Sheets("Sheet2").Range("B" & dongcuoi).Value = Sheets("Sheet1").Range("B4")
luôn đi còn chay for làm gì nữa nhỉ.
2uá khó hiểu.?!
 
Nếu đã vậy thì sao không là: nếu i = dongcuoi
Sheets("Sheet1").Range("A4").Value = Sheets("Sheet2").Range("A"& dongcuoi) và
Sheets("Sheet2").Range("B" & dongcuoi).Value = Sheets("Sheet1").Range("B4")
luôn đi còn chay for làm gì nữa nhỉ.
2uá khó hiểu.?!
Người ta cập nhật trên một range 8 ô (từ 3 đến 10). Bạn chỉ làm 1 ô.

< 2uá khó hiểu.?! : như tôi đã chú thích ở trên. Có thể người ta dùng vòng lặp vì có chuyện tham chiếu lòng vòng. Nhưng trong trường hợp này quá nguy hiểm. Đầu tiên hết là code không có chỗ bảo đảm "automatic calculation".

Chú thích: bạn có vẻ muốn theo dấu vị lão thành, dùng cách đánh máy chữ thời thập niên 50-60's.
Cộng với vụ tô đậm cả bài viết (bài #7). Nên nhớ người ta là bô lão, có thể tự tung tự tác, khác với người thường.
 
Người ta cập nhật trên một range 8 ô (từ 3 đến 10). Bạn chỉ làm 1 ô.

< 2uá khó hiểu.?! : như tôi đã chú thích ở trên. Có thể người ta dùng vòng lặp vì có chuyện tham chiếu lòng vòng. Nhưng trong trường hợp này quá nguy hiểm. Đầu tiên hết là code không có chỗ bảo đảm "automatic calculation".

Chú thích: bạn có vẻ muốn theo dấu vị lão thành, dùng cách đánh máy chữ thời thập niên 50-60's.
Cộng với vụ tô đậm cả bài viết (bài #7). Nên nhớ người ta là bô lão, có thể tự tung tự tác, khác với người thường.
Đúng rồi bạn. Kết quả tính toán từ một modul độc lập khá cồng kềnh phức tạp, nhận tham số đầu vào từ từng bản ghi của file data để trả về kq. Do vậy mình thêm đoạn code này đã giải quyết dc bài toán yêu cầu chính xác và gọn nhẹ. Với mình nó hiệu quả, các bạn có thể cùng chia sẻ thêm các pp khác cho đa dạng. Thanks.
ah mà gọi mình là bô lão nghe buồn quá nhất là việc dùng vb vì mình cũng chỉ mới lên gg tìm hiểu hôm qua thôi.
 
Lần chỉnh sửa cuối:
Người ta cập nhật trên một range 8 ô (từ 3 đến 10). Bạn chỉ làm 1 ô.

< 2uá khó hiểu.?! : như tôi đã chú thích ở trên. Có thể người ta dùng vòng lặp vì có chuyện tham chiếu lòng vòng. Nhưng trong trường hợp này quá nguy hiểm. Đầu tiên hết là code không có chỗ bảo đảm "automatic calculation".

Chú thích: bạn có vẻ muốn theo dấu vị lão thành, dùng cách đánh máy chữ thời thập niên 50-60's.
Cộng với vụ tô đậm cả bài viết (bài #7). Nên nhớ người ta là bô lão, có thể tự tung tự tác, khác với người thường.
Rõ ràng là với code trên của chủ thớt thì Sheets("Sheet1").Range("A4").Value nhận giá trị lần lượt của ô Sheets("Sheet2").Range("A" & i) khi i = 3,4,.... đến khi i=10 thì dừng lại lúc này Sheets("Sheet1").Range("A4").Value= Sheets("Sheet2").Range("A10").
Tôi nghĩ rằng vòng lặp này gán giá trị của từng ô một trong vùng 8 hay bao nhiêu ô gì đó cho 1 một ô và phải có không có điều kiện gì đố để ô được gán nhân giá trị nào, còn nếu không thì mặc nhiên là nhân giá trị cuối cùng mà thôi.
Tôi tự nhận thấy mình kiến thức nông cạn, muốn tìm hiểu thêm ở những tiền bối có kiến thức uyên thâm để kỳ vọng có tiếp thu được ít nhiều thôi mà.
Luôn luôn trân trọng đã góp ý cho bản thân.
 
Rõ ràng là với code trên của chủ thớt thì Sheets("Sheet1").Range("A4").Value nhận giá trị lần lượt của ô Sheets("Sheet2").Range("A" & i) khi i = 3,4,.... đến khi i=10 thì dừng lại lúc này Sheets("Sheet1").Range("A4").Value= Sheets("Sheet2").Range("A10").
...
Bạn hiểu lầm rồi. Cái range 8 tôi nói là cột B chứ không phải A.
Sheets("Sheet2").Range("B3:B10").Value = Sheets("Sheet1").Range("B4")

.... Với mình nó hiệu quả, các bạn có thể cùng chia sẻ thêm các pp khác cho đa dạng. Thanks.
ah mà gọi mình là bô lão nghe buồn quá nhất là việc dùng vb vì mình cũng chỉ mới lên gg tìm hiểu hôm qua thôi.
Tôi vốn không thích giao thiệp với người nói tiếng Tây Việt lẫn lộn.
Và từ "bô lão" tôi nói với tác giả bài #11. Khẳng định với bạn rằng ở đây ai cũng hiểu không phải là ám chỉ bạn.
 
Sheets("Sheet2").Range("B" & i).Value = Sheets("Sheet1").Range("B4")
Rõ ràng là Range("B"& i) mà. chứ có phải là Range("B2:B10") đâu.

Tôi cũng giống như anh thôi. Ở một topic nào đó tôi đã có hỏi là tại sao không thuần Việt các hàm các biến các mảng (trong điều kiện nếu có thể được). Thường là những người tôn sùng "phát kiến vĩ đại" của Ngáo sư Bùi Hiền và ủng hộ vấn đề bỏ Học Lễ của Ngáo Sư Trần Ngọc Thêm là những người mà Tôi, Bạn, và nhiều thành viên trên diễn đàn này không chào đón.
 
Lần chỉnh sửa cuối:
Bạn hiểu lầm rồi. Cái range 8 tôi nói là cột B chứ không phải A.
Sheets("Sheet2").Range("B3:B10").Value = Sheets("Sheet1").Range("B4")


Tôi vốn không thích giao thiệp với người nói tiếng Tây Việt lẫn lộn.
Và từ "bô lão" tôi nói với tác giả bài #11. Khẳng định với bạn rằng ở đây ai cũng hiểu không phải là ám chỉ bạn.
Rõ ràng là Range("B"& i) mà. chứ có phải là Range("B2:B10") đâu.

Tôi cũng giống như anh thôi. Ở một topic nào đó tôi đã có hỏi là tại sao không thuần Việt các hàm các biến các mảng (trong điều kiện nếu có thể được). Thường là những người tôn sùng "phát kiến vĩ đại" của Ngáo sư Bùi Hiền và ủng hộ vấn đề bỏ Học Lễ của Ngáo Sư Trần Ngọc Thêm là những người mà Tôi, Bạn, và nhiều thành viên trên diễn đàn này không chào đón.
 
Web KT

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

Back
Top Bottom