Xin giúp em hoàn chỉnh Code VBA (auto sheets theo ngày... xuất nhập dữ liệu theo mong muốn)

Liên hệ QC

truongtu_1988

Thành viên mới
Tham gia
19/3/21
Bài viết
48
Được thích
2
Em xin nhờ Anh Chị, Thầy Cô giúp em với, em xin cảm ơn !!!
Nguồn code em tham khảo trên internet, nhưng không hoạt động như mong muốn.
Ví dụ: tháng 7 có 31 ngày thì sẽ xuất ra 31 sheet, và khi chạy các sheet mới thì nó sẽ copy dữ liệu toàn bộ của sheet "Form" đưa qua các sheets đó.
Tại sheet "Data" khi ta chọn ngày bất kỳ trong tháng đó, thì sẽ được xuất dữ liệu từ sheet ngày tương ứng qua sheet "Data".
Em xin cảm ơn Anh Chị, quý Thầy Cô nhiều!!!
 

File đính kèm

  • auto_sheets_ngày.xlsm
    54.9 KB · Đọc: 15
Em xin nhờ Anh Chị, Thầy Cô giúp em với, em xin cảm ơn !!!
Nguồn code em tham khảo trên internet, nhưng không hoạt động như mong muốn.
Ví dụ: tháng 7 có 31 ngày thì sẽ xuất ra 31 sheet, và khi chạy các sheet mới thì nó sẽ copy dữ liệu toàn bộ của sheet "Form" đưa qua các sheets đó.
Tại sheet "Data" khi ta chọn ngày bất kỳ trong tháng đó, thì sẽ được xuất dữ liệu từ sheet ngày tương ứng qua sheet "Data".
Em xin cảm ơn Anh Chị, quý Thầy Cô nhiều!!!
Thử code cùi bắp này xem. vẫn là code của bạn tôi có sửa đôi chút và viết thêm phần tổng hợp và sh Data
 

File đính kèm

  • auto_sheets_ngày.xlsm
    37.4 KB · Đọc: 14
Upvote 0
Thử code cùi bắp này xem. vẫn là code của bạn tôi có sửa đôi chút và viết thêm phần tổng hợp và sh Data
Dạ em làm được chổ thêm ngày đầu của tháng mới rồi sửa ( For i = 0 To j thành ->(j - 1)).
Mình có thể thêm chỉnh thêm nếu chưa chọn tháng khác mà chạy tiếp, để không báo lổi,mà sẽ hiện thông báo vui lòng chọn tháng kế tiếp.
Em xin cám ơn !!!
 
Upvote 0
" nếu chưa chọn tháng khác mà chạy tiếp, để không báo lỗi, mà sẽ hiện thông báo vui lòng chọn tháng kế tiếp".....

Bạn sửa lại code theo file đính kèm.
chỗ chọn ngày để lấy dữ liệu ở sh Data mình đã làm cái Data Validation cho dễ lấy ngày rồi.
 

File đính kèm

  • auto_sheets_ngày.xlsm
    47.7 KB · Đọc: 10
Lần chỉnh sửa cuối:
Upvote 0
" nếu chưa chọn tháng khác mà chạy tiếp, để không báo lỗi, mà sẽ hiện thông báo vui lòng chọn tháng kế tiếp".....

Bạn sửa lại code theo file đính kèm.
chỗ chọn ngày để lấy dữ liệu ở sh Data mình đã làm cái Data Validation cho dễ lấy ngày rồi.
Bạn cho mình hỏi chổ này với nha, mình không hiểu (Dim d&, col&) đây là khai báo kiểu biến gì vậy bạn?
Bạn giúp mình, bổ sung thêm công thức (khi bấm chạy công thức ) -> ( không quan tâm ngày 1 hàng tháng vì data ngày 1= sheet Form), còn các ngày còn lại số kỳ cuối hôm nay là kỳ đầu của ngày mai. Bạn kiểm tra file giúp mình nha!
Với khi mình lấy data của từng ngày ra sheet Data, mình có thể chỉnh sửa và lưu đè dử liệu lên của ngày đó ( nếu có dữ liệu còn không sẽ thông báo không có dữ liệu), bạn sửa cho mình cái Code tổng hợp thêm thông báo khi không có dữ liệu import ( :heart: )
Cám ơn Bạn @HUONGHCKT và Diễn Đàn GPE nhiều!!!
 

File đính kèm

  • auto_sheets_ngàynew.xlsm
    101.4 KB · Đọc: 5
Upvote 0
Bạn giúp mình, bổ sung thêm công thức (khi bấm chạy công thức ) -> ( không quan tâm ngày 1 hàng tháng vì data ngày 1= sheet Form), còn các ngày còn lại số kỳ cuối hôm nay là kỳ đầu của ngày mai. Bạn kiểm tra file giúp mình nha!
Với khi mình lấy data của từng ngày ra sheet Data, mình có thể chỉnh sửa và lưu đè dử liệu lên của ngày đó ( nếu có dữ liệu còn không sẽ thông báo không có dữ liệu), bạn sửa cho mình cái Code tổng hợp thêm thông báo khi không có dữ liệu import ( :heart: )
Cám ơn Bạn @HUONGHCKT và Diễn Đàn GPE nhiều!!!
[/QUOTE]

Của bạn đây. hãy thử kiểm tra thật kỹ nhé. tên sh sau khi add được thay đổi (so với code cũ) để đảm bảo hàm InDiRest hoạt động được.
Muốn đến sh nào thì chạy công thức sh đó thị click vào nút ở sh đó, nếu muốn cứ add sh nào thì chạy luôn công thức thì vào modul Add-deleteSh và bỏ dấu "'" ở trước dòng Call CONGTHUC
Sh Data sau khi click nút Run code sẽ kiểm tra 2 cột G và I ở sh cần lấy vào sh Data nếu không có dữ liệu sẽ hiện thông báo và thoát sub, còn có thì lấy data .
Kích nút xóa data thì sẽ xóa sạch sh, còn click nút lưu đè thì sẽ lấy toàn bộ từ dòng 7 (sau dòng tiêu đề và paste và sh ngày đã lấy, sau đó sẽ xáo sạch sh data.
 

File đính kèm

  • auto_sheets_ngàynew.xlsm
    73.7 KB · Đọc: 9
Upvote 0
Bạn giúp mình, bổ sung thêm công thức (khi bấm chạy công thức ) -> ( không quan tâm ngày 1 hàng tháng vì data ngày 1= sheet Form), còn các ngày còn lại số kỳ cuối hôm nay là kỳ đầu của ngày mai. Bạn kiểm tra file giúp mình nha!
Với khi mình lấy data của từng ngày ra sheet Data, mình có thể chỉnh sửa và lưu đè dử liệu lên của ngày đó ( nếu có dữ liệu còn không sẽ thông báo không có dữ liệu), bạn sửa cho mình cái Code tổng hợp thêm thông báo khi không có dữ liệu import ( :heart: )
Cám ơn Bạn @HUONGHCKT và Diễn Đàn GPE nhiều!!!

Của bạn đây. hãy thử kiểm tra thật kỹ nhé. tên sh sau khi add được thay đổi (so với code cũ) để đảm bảo hàm InDiRest hoạt động được.
Muốn đến sh nào thì chạy công thức sh đó thị click vào nút ở sh đó, nếu muốn cứ add sh nào thì chạy luôn công thức thì vào modul Add-deleteSh và bỏ dấu "'" ở trước dòng Call CONGTHUC
Sh Data sau khi click nút Run code sẽ kiểm tra 2 cột G và I ở sh cần lấy vào sh Data nếu không có dữ liệu sẽ hiện thông báo và thoát sub, còn có thì lấy data .
Kích nút xóa data thì sẽ xóa sạch sh, còn click nút lưu đè thì sẽ lấy toàn bộ từ dòng 7 (sau dòng tiêu đề và paste và sh ngày đã lấy, sau đó sẽ xáo sạch sh data.
[/QUOTE]
Mình cám ơn bạn rất nhiều :heart: :heart: :heart: :heart: :heart:, chúc bạn và gia đình & Anh Chị Thầy Cô diễn đàn GPE 1 ngày chủ nhật vui vẻ hạnh phúc (Chung tay phòng chống đẩy lùi Covid)
Bạn có thể sửa mình thêm 1 tí (chổ nút Run mặc dù có dữ liệu của ngày đó nhưng vẫn hiện thông báo không có dữ liệu ngày đó)
Với mình có tạo thêm 1 User form (nguồn từ : https://thedatalabs.org/progress-bar-in-excel/) nhưng vẫn không thể load được
Cám ơn bạn và mọi người diễn đàn GPE nhiều!!!
 

File đính kèm

  • auto_sheets_ngàynew.xlsm
    76.9 KB · Đọc: 3
  • Progress-bar-with-a-user-form-in-Excel-Demo.xlsm
    45.8 KB · Đọc: 6
Upvote 0
Bạn có thể sửa mình thêm 1 tí (chổ nút Run mặc dù có dữ liệu của ngày đó nhưng vẫn hiện thông báo không có dữ liệu ngày đó)
Với mình có tạo thêm 1 User form (nguồn từ : https://thedatalabs.org/progress-bar-in-excel/) nhưng vẫn không thể load được
Cám ơn bạn và mọi người diễn đàn GPE nhiều!!!

Mình đã sửa cho bạn rồi kể cả là đã lấy được số liêu và sh Data.

Theo mình bạn nên gõ bỏ cái Progress-bar ấy đi, bởi:
1/ Không cần thiết (đấy là theo quan điểm của mình)
2/ Sẽ làm chậm chương trình vì nó phải chạy cho xong code của cái form ấy rồi nó mới chạy code chính của chương trình
 

File đính kèm

  • auto_sheets_ngàynew.xlsm
    71.1 KB · Đọc: 12
Upvote 0
Mình đã sửa cho bạn rồi kể cả là đã lấy được số liêu và sh Data.

Theo mình bạn nên gõ bỏ cái Progress-bar ấy đi, bởi:
1/ Không cần thiết (đấy là theo quan điểm của mình)
2/ Sẽ làm chậm chương trình vì nó phải chạy cho xong code của cái form ấy rồi nó mới chạy code chính của chương trình
Cám ơn bạn nhiều !!! tại mình không biết ( thấy chạy nó lắc lắc màn hình, mình nghĩ để cái form vô cho đở...:p)
Cám ơn bạn HUONGHCKT đã nhiệt tình giúp mình và diễn đàn GPE !!!
 
Upvote 0

HUONGHCKT

Bạn có thể hướng dẫn mình cái code này ( đặc biệt chổ này: ActiveCell.FormulaR1C1 = "=INDIRECT(""'""&R1C27&""'!""&RC27)". ActiveCell.FormulaR1C1 = "=INDIRECT(""'""&R1C27&""'!""&RC28)" )

Cám ơn bạn nhiều!!!

Range("F4").Select
ActiveCell.FormulaR1C1 = "=INDIRECT(""'""&R1C27&""'!""&RC27)"
Range("F4").Select
Selection.AutoFill Destination:=Range("F4:F44")
Range("H4").Select
ActiveCell.FormulaR1C1 = "=INDIRECT(""'""&R1C27&""'!""&RC28)"
Range("H4").Select
Selection.AutoFill Destination:=Range("H4:H44")
Range("F4").Select

End Sub
 
Upvote 0

HUONGHCKT

Bạn có thể hướng dẫn mình cái code này ( đặc biệt chổ này: ActiveCell.FormulaR1C1 = "=INDIRECT(""'""&R1C27&""'!""&RC27)". ActiveCell.FormulaR1C1 = "=INDIRECT(""'""&R1C27&""'!""&RC28)" )

Cám ơn bạn nhiều!!!

ActiveCell.FormulaR1C1 = "=INDIRECT(""'""&R1C27&""'!""&RC28)"
Range("H4").Select
Selection.AutoFill Destination:=Range("H4:H44")
Range("F4").Select

End Sub

Mình cũng dùng Macro ghi lại thôi mà: đại loại là như thế này:
Range("H4").select = chọn ô H4
ActiveCell.FormulaR1C1 là gán công thức cho ô
="=INDERECT("'"& tên Sh&""'!""& địa chỉ ô cần lấy)" - ở đây Tên sh được nằm ở ô AA1 và địa chỉ ô cần lấy nằm ở ô AB4 (=I4). Có nghĩa là Ô H4 = ô I4 của Sh trước đó. nó tương tự như công thức H4='N2-3-2021'!$I4 thôi mà.
Còn dòng Selectio.AutoFill Destination: =Range("H4:H44) tương đương với kéo công thức xuống dưới đến dòng đã định (ở đây đến H44--trong file là đến H51 cơ đấy).
Dòng Range("F4") là đưa con chuột về ô F4 sẵn sàng đợi lệnh.

Lưu ý Bạn không được xóa Cột AA và AB của các sh được tạo ra sau khi chạy code add_sheet nhé. nếu xóa công thức của các ô trong cột F và H sẽ ra #REF!

Cái phần dưới dòng 51 của sh Form và các sh sau này ấy là gì và các ô ấy được lấy dữ liệu thế nào (bằng công thức tự động hay nhập liệu bằng tay)? Có mối liên hệ gì vói các Sh khác?...
 
Upvote 0
Cam
Mình cũng dùng Macro ghi lại thôi mà: đại loại là như thế này:
Range("H4").select = chọn ô H4
ActiveCell.FormulaR1C1 là gán công thức cho ô
="=INDERECT("'"& tên Sh&""'!""& địa chỉ ô cần lấy)" - ở đây Tên sh được nằm ở ô AA1 và địa chỉ ô cần lấy nằm ở ô AB4 (=I4). Có nghĩa là Ô H4 = ô I4 của Sh trước đó. nó tương tự như công thức H4='N2-3-2021'!$I4 thôi mà.
Còn dòng Selectio.AutoFill Destination: =Range("H4:H44) tương đương với kéo công thức xuống dưới đến dòng đã định (ở đây đến H44--trong file là đến H51 cơ đấy).
Dòng Range("F4") là đưa con chuột về ô F4 sẵn sàng đợi lệnh.

Lưu ý Bạn không được xóa Cột AA và AB của các sh được tạo ra sau khi chạy code add_sheet nhé. nếu xóa công thức của các ô trong cột F và H sẽ ra #REF!

Cái phần dưới dòng 51 của sh Form và các sh sau này ấy là gì và các ô ấy được lấy dữ liệu thế nào (bằng công thức tự động hay nhập liệu bằng tay)? Có mối liên hệ gì vói các Sh khác?...
Bạn ơi nếu mình trộn cột F G H I(44:F51) thành 1 ô, thì mình sẽ sửa sao nè bạn? Mình mò hoài mà không được (@$%@
Với ví dụ mình chèn thêm 12 hàng hoặc hơn dưới hàng 51 ( thêm dữ liệu máy ), thì mình sẽ sửa sao để chạy công thức nó đúng.
Cám ơn Bạn nhiều!!!
 
Lần chỉnh sửa cuối:
Upvote 0
Cam

Bạn ơi nếu mình trộn cột F G H I(44:F51) thành 1 ô, thì mình sẽ sửa sao nè bạn? Mình mò hoài mà không được (@$%@
Với ví dụ mình chèn thêm 12 hàng hoặc hơn dưới hàng 51 ( thêm dữ liệu máy ), thì mình sẽ sửa sao để chạy công thức nó đúng.
Cám ơn Bạn nhiều!!!

Mình không hiểu ý bạn lắm, chỉ hướng dẫn theo ý hiểu thế này:
1/ Nếu cần nối thông một khối ô thì bôi đen khối ô đó và bấm chọn vào biểu tượng Merger &center trên thanh công cụ (hình vuông có mũi tên 2 đầu ở trong). Nếu muốn nó làm tự động thì dùng cách ghi lại macro là được.
2/ nếu chèn thêm hàng-thêm dữ liệu (nhiều ít tùy ý ở sh nào đó) thì bạn cứ fill (kéo công thức ) xuống dưới, hoặc lên trên,hoặc copy công thức ở một ô hoặc nhiều ô phía trên và paste xuống các ô phía dưới cùng cột. (nhớ là cột AA, và AB cũng phải copy tương ứng nhé).
Nếu cần cụ thể hơn bạn up file mẫu lên và ghi rõ kết quả mong muốn là sẽ có người giúp thôi.
 
Upvote 0
Mình không hiểu ý bạn lắm, chỉ hướng dẫn theo ý hiểu thế này:
1/ Nếu cần nối thông một khối ô thì bôi đen khối ô đó và bấm chọn vào biểu tượng Merger &center trên thanh công cụ (hình vuông có mũi tên 2 đầu ở trong). Nếu muốn nó làm tự động thì dùng cách ghi lại macro là được.
2/ nếu chèn thêm hàng-thêm dữ liệu (nhiều ít tùy ý ở sh nào đó) thì bạn cứ fill (kéo công thức ) xuống dưới, hoặc lên trên,hoặc copy công thức ở một ô hoặc nhiều ô phía trên và paste xuống các ô phía dưới cùng cột. (nhớ là cột AA, và AB cũng phải copy tương ứng nhé).
Nếu cần cụ thể hơn bạn up file mẫu lên và ghi rõ kết quả mong muốn là sẽ có người giúp thôi.
Mình gởi bạn file, trong file mình có ghi nội dung chi tiết
Cám ơn bạn nhiều!!!
 

File đính kèm

  • auto_sheets_ngàynew.xlsm
    76.1 KB · Đọc: 7
Upvote 0
Mình gởi bạn file, trong file mình có ghi nội dung chi tiết
Cám ơn bạn nhiều!!!
Của bạn đây. Bạn thêm bao nhiêu dòng sau dòng cuối cùng của cột F ở sh Form đều được.
Còn nếu phải merger cell (nối thông ô) thì bạn làm thủ công ở sh form nhé.
còn nếu muốn nối thông ô ỏ sh (Ng....) nào đó thì click nút nạp công thức ở sh đó nhé.
Chúc khỏe vui.
 

File đính kèm

  • auto_sheets_ngàynew.xlsm
    74.7 KB · Đọc: 21
Upvote 0
Của bạn đây. Bạn thêm bao nhiêu dòng sau dòng cuối cùng của cột F ở sh Form đều được.
Còn nếu phải merger cell (nối thông ô) thì bạn làm thủ công ở sh form nhé.
còn nếu muốn nối thông ô ỏ sh (Ng....) nào đó thì click nút nạp công thức ở sh đó nhé.
Chúc khỏe vui.
Cám ơn bạn nhiều nhiều!!!:throb:
 
Upvote 0
Web KT

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

Back
Top Bottom