Hỏi Về Chèn Dòng Có điều Kiện Kết Hợp Tự động điền Dòng Chữ (vào ...
Có thể bạn quan tâm
- Trang chủ Có gì mới Hoạt động gần nhất Tác giả
- Diễn đàn Tìm bài viết mới Tìm theo chuyên mục
- Video Video về Excel Video về tin học khác Tin tức về tin học chung
- Thông tin mới Tìm bài mới Tài Nguyên Mới Hoạt động gần nhất
- Tài nguyên Đánh giá mới nhất Tìm tài nguyên
- Đóng góp
Tìm kiếm
Mọi nơi Đề tài Diễn đàn này Đề tài này Chỉ tìm trong tiêu đề Tìm kiếm Tìm nâng cao…- Tìm bài viết mới
- Tìm theo chuyên mục
Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
- Khách ơi! GPE thông tin đến bạn ấn phẩm "lập trình VBA trong Excel": - Phần cơ bản - Phần Nâng Cao - VBA trong Excel - Cải thiện và tăng tốc
- Trang chủ
- Diễn đàn
- Lập Trình với Excel
- Lập Trình với Excel
- Thread starter Dauthivan
- Ngày gửi 13/1/12
Dauthivan
Thành viên tiêu biểu
Tham gia 15/8/08 Bài viết 565 Được thích 327 Bài toán hôm qua nhờ mọi người góp ý, buổi hôm nay ngồi nghiên cứu viết Code giờ em đã bắt đầu quen dần. Hiện tại, bản thân em đã có thể tự làm được các kiểu bài tương tự rồi. Em xin nhờ mọi người giúp em thêm 01 bài toán: Yêu cầu của đầu bài: Tại mỗi dòng cuối của tất cả công việc, làm thế nào để sau khi chạy Code thì mỗi công việc được tự động chèn thêm 2 dòng, đồng thời nội dung của từng dòng được đánh nội dung vào luôn như sau: - Dòng thứ nhất xuất hiện dòng chữ: Chi phí chung - Dòng thứ 2 xuất hiện dòng chữ: Thu nhập chịu thuế tính trước Trên màn hình kết quả hình ảnh sau khi chèn dòng màu vàng (em làm mẫu công việc số 1)File đính kèm
- Chen dong.xls 36 KB · Đọc: 261
- 1
- 2
Go to page
Tiếp tục Tiếp Last Sắp xếp theo thời gian sắp xếp theo bầu chọnhoamattroicoi
Thành viên gắn bó
Thành viên BQT Moderator Tham gia 19/12/10 Bài viết 2,584 Được thích 5,761 Nghề nghiệp Công nhân vệ sinh số liệu Khởi động ngày mới! Bạn chạy thử CODE này nhé! Mình cũng đang tập tành học VBA như bạn đó! PHP:Sao chép. Sub inSertRow() Dim fRow, lRow Dim i As Long Dim Clls1 As Range Set Clls1 = Cells(8, 8) fRow = 4 lRow = Cells(65536, 3).End(xlUp).Row Cells(lRow + 1, 3).Resize(2).Value = Clls1.Resize(2).Value With Cells(lRow + 1, 3) .Resize(2).HorizontalAlignment = xlLeft .Resize(2).Font.FontStyle = "Bold" End With For i = lRow To fRow + 2 Step -1 With Cells(i, 1) If .Value <> "" Then .Resize(2, 1).EntireRow.Insert .Offset(-2, 2).Resize(2).Value = Clls1.Resize(2).Value With .Offset(-2, 2).Resize(2) .HorizontalAlignment = xlLeft .Font.FontStyle = "Bold" End With End If End With Next End Sub Bạn thử làm cách khác nhé, dùng vòng lặp không xác định DO WHILE.....LOOP hoặc DO....LOOP UNTIL kết hợp với thuộc tính End() xem sao!Cùng nhau học hỏi! Lần chỉnh sửa cuối: 14/1/12 Upvote 0ptm0412
Bad Excel Member
Thành viên BQT Administrator Tham gia 4/11/07 Bài viết 14,445 Được thích 37,104 Donate (Momo) Giới tính Nam Nghề nghiệp Consultant Hoa còi suy nghĩ thêm: thử bỏ đoạn code phía trên vòng lặp For. Coi như bài tập suy luận. Vì đoạn code đó giống y đoạn code bên trong vòng lặp. Tức là bỏ hẳn đoạn này: PHP:Sao chép. Cells(lRow + 1, 3).Resize(2).Value = Clls1.Resize(2).Value With Cells(lRow + 1, 3) .Resize(2).HorizontalAlignment = xlLeft .Resize(2).Font.FontStyle = "Bold" End With Upvote 0hoamattroicoi
Thành viên gắn bó
Thành viên BQT Moderator Tham gia 19/12/10 Bài viết 2,584 Được thích 5,761 Nghề nghiệp Công nhân vệ sinh số liệu Công việc bận quá giờ mới ghé diễn đàn được, hoa còi thử làm theo gợi ý của sư phụ, thanks sư phụ! PHP:Sao chép. Sub inSertRow() Dim fRow, lRow Dim i As Long Dim Clls1 As Range Set Clls1 = Cells(8, 8) fRow = 4 lRow = Cells(65536, 3).End(xlUp).Row For i = lRow + 1 To fRow + 2 Step -1 With Cells(i, 1) If .Value <> "" Or i = lRow + 1 Then .Resize(2, 1).EntireRow.Insert .Offset(-2, 2).Resize(2).Value = Clls1.Resize(2).Value With .Offset(-2, 2).Resize(2) .HorizontalAlignment = xlLeft .Font.FontStyle = "Bold" End With End If End With Next End Sub Lần chỉnh sửa cuối: 14/1/12 Upvote 0ptm0412
Bad Excel Member
Thành viên BQT Administrator Tham gia 4/11/07 Bài viết 14,445 Được thích 37,104 Donate (Momo) Giới tính Nam Nghề nghiệp Consultant Chính xác là như thế! Lần sau, hễ thấy cái gì giống giống nhau, tìm cách gom lại. Upvote 0 DDauthivan
Thành viên tiêu biểu
Tham gia 15/8/08 Bài viết 565 Được thích 327 Xin giúp em biết thêm một số đối tượnghoamattroicoi đã viết: Bạn thử làm cách khác nhé, dùng vòng lặp không xác định DO WHILE.....LOOP hoặc DO....LOOP UNTIL kết hợp với thuộc tính End() xem sao!Cùng nhau học hỏi! Nhấp chuột vào đây để mở rộng...Trình độ của bác hiện giờ đã tương đối thành thạo rồi, trình của em còi lắm. Một số đối tượng em đọc còn chưa hiểu, bác có biết hiện giờ có sách nào hướng dẫn học tốt nhất về VBA không ? Chỉ giúp cho em biết để em mua về đọc. Rất mong bác và mọi người giải thích dùm em đoạn sau mới, em không biết nó là gì PHP:Sao chép. Set Clls1 = Cells(8, 8) ............. .Resize(2, 1).EntireRow.Insert .Offset(-2, 2).Resize(2).Value = Clls1.Resize(2).Value (Mặc dù thuật toán em có hiểu, ví dụ dòng If .Value <> "" Or i = lRow + 1 Then thì em hiểu lựa chọn dòng thứ tự của các công việc (từ công việc thứ 2 trở đi). Lần chỉnh sửa cuối: 14/1/12 Upvote 0
hoamattroicoi
Thành viên gắn bó
Thành viên BQT Moderator Tham gia 19/12/10 Bài viết 2,584 Được thích 5,761 Nghề nghiệp Công nhân vệ sinh số liệu PHP:Sao chép. (Mặc dù thuật toán em có hiểu, ví dụ dòng If .Value <> "" Or i = lRow + 1 Then thì em hiểu lựa chọn dòng cuối của mỗi công việc, nhưng các thuộc tính, cách dùng các đối tượng trong VBA nhiều cái em chưa hiểu hết) Dauthivan hiểu nhầm rồi, cái này không gọi là thuật toán bạn ạ. Thuật toán là trình tự các bước thực hiện để giải một bài toán hay thực hiện một công việc nào đó tù lúc nhập dữ liệu đến khi ra được kết quả. Cái mà bạn nói ở trên chỉ là các câu lệnh mô phỏng lại thuật toán mà thôi. Hay chính là ngôn ngữ để ta giao tiếp với máy tính để máy tính hiểu được ta muốn làm gì? --------------------------------------------------------------------- Để làm bài toán này trước hết mình thường suy nghĩ nếu làm bằng bằng tay thì sẽ làm thế nào? - Đầu tiên mình sẽ dò trên cột A từ dưới lên, cứ gặp ô có giá trị (khác rỗng) thì thực hiện chèn dòng và điền nội dung. - Xác định xem dò như vậy đến khi nào thì dừng đây? Cái này chính là TÍNH DỪNG (HỮU HẠN) 1 đặc trưng THUẬT TOÁN - Xét đến các phát sinh :trong bài này có một vấn đề phát sinh là ta phải điền cả nội dung vào 2 ô cuối cùng của vùng dữ liệu trong khi ô điều kiện lại rỗng??? Định dạng lại dữ liệu sau khi chèn và điền nội dung cho đúng yêu cầu... ---------------------------------------------------------------------- Bạn đọc thử cái này xem có hiểu không nhé, HMT diễn giải theo ý hiểu của mình khi viết CODE PHP:Sao chép. Sub inSertRow() Dim fRow, lRow Dim i As Long Dim Clls1 As Range 'Do khai bao Clls la doi tuong Range nen khi gan gia tri cho bien doi tuong phai dung tu khoa set Set Clls1 = Cells(8, 8) ' Clls1 = H8 'Xac dinh dong dau tien cua vung du lieu fRow = 4 'Xac dinh dong cuoi cung cua vung du lieu lRow = Cells(65536, 3).End(xlUp).Row 'Duyet tu o cuoi cung len o dau tien For i = lRow + 1 To fRow + 2 Step -1 'Vi phai chen them 2 dong vao o cuoi cung nen ta phai cong them 1 vao lRow 'Neu duyet den tan fRow thi fRow thoa man khac rong no se chen them 2 dong (trong khi ta lai k can chen vao do) nen fRow + 2 With Cells(i, 1) If .Value <> "" Or i = lRow + 1 Then 'Thoa man dieu kien thi tai o co chi so dong la i,cot 1 mo rong 2 dong, chon ca 2 dong do va thuc hien lenh chen .Resize(2, 1).EntireRow.Insert 'Chen xong thi dien noi dung, tu o co chi so dong i, cot 1 di chuyen len tren 2 dong, dich sang phai 2 cot, mo rong kich thuoc cua vung ra 'Ban xem them thuoc tinh offset và resize nhe ' Noi dung chen duoc dat san o cells(8,8)=H8 nen ta gan value cho no thoi .Offset(-2, 2).Resize(2).Value = Clls1.Resize(2).Value With .Offset(-2, 2).Resize(2) 'Cai nay thi ghi macro la biet, he he .HorizontalAlignment = xlLeft .Font.FontStyle = "Bold" End With End If End With Next End Sub Upvote 0 DDauthivan
Thành viên tiêu biểu
Tham gia 15/8/08 Bài viết 565 Được thích 327hoamattroicoi đã viết: PHP:Sao chép. (Mặc dù thuật toán em có hiểu, ví dụ dòng If .Value <> "" Or i = lRow + 1 Then thì em hiểu lựa chọn dòng cuối của mỗi công việc, nhưng các thuộc tính, cách dùng các đối tượng trong VBA nhiều cái em chưa hiểu hết) Dauthivan hiểu nhầm rồi, cái này không gọi là thuật toán bạn ạ. Thuật toán là trình tự các bước thực hiện để giải một bài toán hay thực hiện một công việc nào đó tù lúc nhập dữ liệu đến khi ra được kết quả. Cái mà bạn nói ở trên chỉ là các câu lệnh mô phỏng lại thuật toán mà thôi. Hay chính là ngôn ngữ để ta giao tiếp với máy tính để máy tính hiểu được ta muốn làm gì? --------------------------------------------------------------------- Để làm bài toán này trước hết mình thường suy nghĩ nếu làm bằng bằng tay thì sẽ làm thế nào? - Đầu tiên mình sẽ dò trên cột A từ dưới lên, cứ gặp ô có giá trị (khác rỗng) thì thực hiện chèn dòng và điền nội dung. - Xác định xem dò như vậy đến khi nào thì dừng đây? Cái này chính là TÍNH DỪNG (HỮU HẠN) 1 đặc trưng THUẬT TOÁN - Xét đến các phát sinh :trong bài này có một vấn đề phát sinh là ta phải điền cả nội dung vào 2 ô cuối cùng của vùng dữ liệu trong khi ô điều kiện lại rỗng??? Định dạng lại dữ liệu sau khi chèn và điền nội dung cho đúng yêu cầu... ---------------------------------------------------------------------- Bạn đọc thử cái này xem có hiểu không nhé, HMT diễn giải theo ý hiểu của mình khi viết CODE PHP:Sao chép. Sub inSertRow() Dim fRow, lRow Dim i As Long Dim Clls1 As Range 'Do khai bao Clls la doi tuong Range nen khi gan gia tri cho bien doi tuong phai dung tu khoa set Set Clls1 = Cells(8, 8) ' Clls1 = H8 'Xac dinh dong dau tien cua vung du lieu fRow = 4 'Xac dinh dong cuoi cung cua vung du lieu lRow = Cells(65536, 3).End(xlUp).Row 'Duyet tu o cuoi cung len o dau tien For i = lRow + 1 To fRow + 2 Step -1 'Vi phai chen them 2 dong vao o cuoi cung nen ta phai cong them 1 vao lRow 'Neu duyet den tan fRow thi fRow thoa man khac rong no se chen them 2 dong (trong khi ta lai k can chen vao do) nen fRow + 2 With Cells(i, 1) If .Value <> "" Or i = lRow + 1 Then 'Thoa man dieu kien thi tai o co chi so dong la i,cot 1 mo rong 2 dong, chon ca 2 dong do va thuc hien lenh chen .Resize(2, 1).EntireRow.Insert 'Chen xong thi dien noi dung, tu o co chi so dong i, cot 1 di chuyen len tren 2 dong, dich sang phai 2 cot, mo rong kich thuoc cua vung ra 'Ban xem them thuoc tinh offset và resize nhe ' Noi dung chen duoc dat san o cells(8,8)=H8 nen ta gan value cho no thoi .Offset(-2, 2).Resize(2).Value = Clls1.Resize(2).Value With .Offset(-2, 2).Resize(2) 'Cai nay thi ghi macro la biet, he he .HorizontalAlignment = xlLeft .Font.FontStyle = "Bold" End With End If End With Next End Sub Nhấp chuột vào đây để mở rộng...Đa tạ bác nhiều, xem xong em hiểu ah, buổi chiều em diễn đạt nhầm ah. Qua một số ví dụ từ hôm nọ đọc, nghiên cứu đến giờ em nhận thấy về cơ bản là em xác định trình tự giải quyết khá nhanh, chỉ có điều yếu tố mà em thiếu nhất kinh nghiệm thực tế, chưa có đủ các công cụ để thực hiện giao tiếp với máy (có ý tưởng nhưng không biết cụ thể hoá bằng lệnh như thế nào). Em sẽ cố gắng tận dụng dịp đón năm mới để trau dồi VBA, em rất mong nhận được sự giúp đỡ của mọi người. Upvote 0
hoamattroicoi
Thành viên gắn bó
Thành viên BQT Moderator Tham gia 19/12/10 Bài viết 2,584 Được thích 5,761 Nghề nghiệp Công nhân vệ sinh số liệuTrình độ của bác hiện giờ đã tương đối thành thạo rồi, trình của em còi lắm. Một số đối tượng em đọc còn chưa hiểu, bác có biết hiện giờ có sách nào hướng dẫn học tốt nhất về VBA không ? Chỉ giúp cho em biết để em mua về đọc Nhấp chuột vào đây để mở rộng...Chưa chắc HMT thành thạo hơn bạn, trình độ của HMT về VBA cũng A,B,C thôi, chắc không hơn bạn là mấy. Có chăng thì HMT được học bài bản hơn bạn 1 chút vì HMT có được sự giúp đỡ rất nhiệt tình của 1 mem trên GPE. Người ấy đã dìu dắt HMT những bước đi chập chững đầu tiên đến với VBA, HMT thực sự rất biết ơn người bạn ấy. ============= Mình thấy bạn rất đam mê VBA, chịu khó post bài và hỏi bài nữa đó chính là bước khởi đầu tốt đẹp đó ============= Ngay như đoạn CODE mà HMT sửa khi có gợi ý của sư phụ ptm0412 cũng chưa hay lắm, vẫn có cách khác xóa đoạn CODE thừa mà không cần OR đi OR lại trong FOR bằng cách gán cho dòng cuối cùng cột 1 giá trị khác rỗng, sau đó thực hiện vòng FOR hết vòng FOR ta xóa giá trị đó đi ---> Dauthivan làm thử nhé! HMT làm thấy nó hay hay. Đôi lời chia sẻ cùng học hỏi, cùng tiến bộ! Lần chỉnh sửa cuối: 14/1/12 Upvote 0 D
Dauthivan
Thành viên tiêu biểu
Tham gia 15/8/08 Bài viết 565 Được thích 327hoamattroicoi đã viết: Chưa chắc HMT thành thạo hơn bạn, trình độ của HMT về VBA cũng A,B,C thôi, chắc không hơn bạn là mấy. Có chăng thì HMT được học bài bản hơn bạn 1 chút vì HMT có được sự giúp đỡ rất nhiệt tình của 1 mem trên GPE. Người ấy đã dìu dắt HMT những bước đi chập chững đầu tiên đến với VBA, HMT thực sự rất biết ơn người bạn ấy. ============= Mình thấy bạn rất đam mê VBA, chịu khó post bài và hỏi bài nữa đó chính là bước khởi đầu tốt đẹp đó ============= Ngay như đoạn CODE mà HMT sửa khi có gợi ý của sư phụ ptm0412 cũng chưa hay lắm, vẫn có cách khác xóa đoạn CODE thừa mà không cần OR bằng cách gán cho dòng cuối cùng cột 1 giá trị khác rỗng, sau đó thực hiện vòng FOR hết vòng FOR ta xóa giá trị đó đi ---> Dauthivan làm thử nhé! HMT làm thấy nó hay hay. Đôi lời chia sẻ cùng học hỏi, cùng tiến bộ! Nhấp chuột vào đây để mở rộng...Em sẽ thử nghiên cứu làm xem, em chỉ cần những bài này đầu tiên làm kiểu gì miễn ra kết quả là mừng lắm rồi, sau này khi đã hiểu tương đối lúc đó mình sẽ có cái nhìn đầy đủ hơn, sau đó mới có thể đặt ra vấn đề tối ưu là làm cách nào nhanh, gọn nhất. Hôm nọ, tình cờ trên diễn đàn em mới biết cách đây khoảng 5 năm về trước thày Ndu96081631 cũng mới bắt đầu như bác bây giờ. Em cũng được biết những ngày đầu tiên khi thày Ndu96081631 bước vào diễn đàn GPE một trong những người thày của thày Ndu96081631 chính là thày Ptm0412. Khi nhìn lại bài toán trước kia do bản thân giải, giải thày Ndu96081631 viết vui đại ý là...đọc lại bài ngày xưa, không hiểu sao hồi đó...giải... ngu thế", mặc dù tư duy toán của thày Ndu96081631 rất sắc sảo, nhưng có lẽ khi đó thày chưa biết nhiều. Bây giờ, trình độ của thày Ndu96081631 và thày Ptm0412 đều ở mức siêu việt, hoàn hảo ở mức khó tưởng tượng. Em sẽ cố gắng để không phụ công của bác, của các thày, mọi người trên diễn đàn đã chỉ bảo, em hy vọng sang năm mới em sẽ tiếp thu nhiều cái mới, hạn chế hỏi những câu "ngố quá". Lần chỉnh sửa cuối: 14/1/12 Upvote 0
hoamattroicoi
Thành viên gắn bó
Thành viên BQT Moderator Tham gia 19/12/10 Bài viết 2,584 Được thích 5,761 Nghề nghiệp Công nhân vệ sinh số liệu Xem thử CODE này nhé! Bạn thêm 2 dòng vào là được CODE! Cứ viết đi viết lại, viết sai sửa lại CODE, năng dùng Msgbox, F8 để kiểm tra các bước mình làm, dần dần mình sẽ vỡ ra được nhiều điều. Hoamattroicoi cũng thế đó! Mong bạn nhanh tiến bộ! Nếu rảnh nghiên cứu làm bài này với vòng lặp không xác định nhé! Cùng học hỏi, cùng tiến bộ. Thanks! PHP:Sao chép. Sub inSertRow() Dim fRow, lRow Dim i As Long Dim Clls1 As Range Set Clls1 = Cells(8, 8) fRow = 4 lRow = Cells(65536, 3).End(xlUp).Row Cells(lRow + 1, 1).Value = "hoamattroicoi" For i = lRow + 1 To fRow + 2 Step -1 With Cells(i, 1) If .Value <> "" Then .Resize(2, 1).EntireRow.Insert .Offset(-2, 2).Resize(2).Value = Clls1.Resize(2).Value With .Offset(-2, 2).Resize(2) .HorizontalAlignment = xlLeft .Font.FontStyle = "Bold" End With End If End With Next Cells([A65536].End(xlUp).Row, 1).Value = "" End Sub Upvote 0concogia
Gội rồi mới Cạo
Tham gia 17/9/09 Bài viết 3,412 Được thích 6,876 Với bài này, ta đã xác định ở cột A, khi gặp cell có dữ liệu thì chèn 2 dòng & gán giá trị, nếu Bé Còi chơi kiểu "nhảy cà tưng" từ dưới lên (sử dụng Do....Loop While & End(XlUp)) thì vòng lặp chỉ nhảy 3 bước là xong, nếu dùng For ...Next phải chạy đủ số dòng. Mình chỉ cảm giác như thế thôi chứ mình hổng biết làm, nếu Còi không làm được thì nhờ Lão Chết Tiệt làm giúp nhé. Hihi Híc Upvote 0 DDauthivan
Thành viên tiêu biểu
Tham gia 15/8/08 Bài viết 565 Được thích 327hoamattroicoi đã viết: Xem thử CODE này nhé! Bạn thêm 2 dòng vào là được CODE! Cứ viết đi viết lại, viết sai sửa lại CODE, năng dùng Msgbox, F8 để kiểm tra các bước mình làm, dần dần mình sẽ vỡ ra được nhiều điều. Nhấp chuột vào đây để mở rộng...Sau khi được các thày Concogia, Ptm0412 chỉ bảo em đã vận dụng khá thuần thục chức năng F8, thế còn cách sử dụng chức năngMsgbox để kiểm tra thế nào ah? Upvote 0
hoamattroicoi
Thành viên gắn bó
Thành viên BQT Moderator Tham gia 19/12/10 Bài viết 2,584 Được thích 5,761 Nghề nghiệp Công nhân vệ sinh số liệuDauthivan đã viết: Sau khi được các thày Concogia, Ptm0412 chỉ bảo em đã vận dụng khá thuần thục chức năng F8, thế còn cách sử dụng chức năngMsgbox để kiểm tra thế nào ah? Nhấp chuột vào đây để mở rộng...Sử dụng Msgbox để hiện kết quả ra màn hình, kiểm tra các bước của thuật toán rất hay, Bạn tham khảo cách sử dụng của Msgbox theo link này nhé, bài #20! Sử dụng MSGBOX
Với bài này, ta đã xác định ở cột A, khi gặp cell có dữ liệu thì chèn 2 dòng & gán giá trị, nếu Bé Còi chơi kiểu "nhảy cà tưng" từ dưới lên (sử dụng Do....Loop While & End(XlUp)) thì vòng lặp chỉ nhảy 3 bước là xong, nếu dùng For ...Next phải chạy đủ số dòng. Mình chỉ cảm giác như thế thôi chứ mình hổng biết làm, nếu Còi không làm được thì nhờ Lão Chết Tiệt làm giúp nhé. Hihi Híc Nhấp chuột vào đây để mở rộng...Chính xác là như vậy, bé CÒI cũng có gợi ý sử dụng vòng lặp không xác định kết hợp với thuộc tính END() ở bài trên nhưng thấy bạn Dauthivan viết như thế này : Nguyên văn bởi Dauthivan :"Em chỉ cần những bài này đầu tiên làm kiểu gì miễn ra kết quả là mừng lắm rồi, sau này khi đã hiểu tương đối lúc đó mình sẽ có cái nhìn đầy đủ hơn, sau đó mới có thể đặt ra vấn đề tối ưu là làm cách nào nhanh, gọn nhất." nên làm nhiều cách để bạn ấy biết rút gọn CODE như thế nào sau đó mới tối ưu thuật toán. bé CÒI cũng đang học bằng phương pháp đó! Vậy chi bằng hãy để bạn ấy luyện công rồi làm thử bài này bằng cách ấy xem thế nào? Chứ bé CÒI hay sư phụ ptm0412 đá típ nữa thì bạn ấy hết cửa suy nghĩ ạ, he he! Dauthivan cố lên !!!Thanks! Lần chỉnh sửa cuối: 15/1/12 Upvote 0 D
Dauthivan
Thành viên tiêu biểu
Tham gia 15/8/08 Bài viết 565 Được thích 327hoamattroicoi đã viết: Sử dụng Msgbox để hiện kết quả ra màn hình, kiểm tra các bước của thuật toán rất hay, Bạn tham khảo cách sử dụng của Msgbox theo link này nhé, bài #20! Sử dụng MSGBOX Chính xác là như vậy, bé CÒI cũng có gợi ý sử dụng vòng lặp không xác định kết hợp với thuộc tính END() ở bài trên nhưng thấy bạn Dauthivan viết như thế này : Nguyên văn bởi Dauthivan :"Em chỉ cần những bài này đầu tiên làm kiểu gì miễn ra kết quả là mừng lắm rồi, sau này khi đã hiểu tương đối lúc đó mình sẽ có cái nhìn đầy đủ hơn, sau đó mới có thể đặt ra vấn đề tối ưu là làm cách nào nhanh, gọn nhất." nên làm nhiều cách để bạn ấy biết rút gọn CODE như thế nào sau đó mới tối ưu thuật toán. bé CÒI cũng đang học bằng phương pháp đó! Vậy chi bằng hãy để bạn ấy luyện công rồi làm thử bài này bằng cách ấy xem thế nào? Chứ bé CÒI hay sư phụ ptm0412 đá típ nữa thì bạn ấy hết cửa suy nghĩ ạ, he he! Dauthivan cố lên !!!Thanks! Nhấp chuột vào đây để mở rộng...Vậy, bác khoan hãy đưa lời giải lên nhé, cho em thời gian suy nghĩ một chút xem em có giải quyết được không, nếu có vướng mắc gì em lại xin phép được hỏi sau ah. Upvote 0
hoamattroicoi
Thành viên gắn bó
Thành viên BQT Moderator Tham gia 19/12/10 Bài viết 2,584 Được thích 5,761 Nghề nghiệp Công nhân vệ sinh số liệuDauthivan đã viết: Vậy, bác khoan hãy đưa lời giải lên nhé, cho em thời gian suy nghĩ một chút xem em có giải quyết được không, nếu có vướng mắc gì em lại xin phép được hỏi sau ah. Nhấp chuột vào đây để mở rộng...Ngày hôm nay chưa nghĩ ra thì ngày mai nghĩ tiếp, hôm nay buồn chưa nghĩ ra, mai vui nghĩ tiếp...---> Chả nhẽ mãi mãi không ra??? Không thế nào , đúng không? Dauthivan cố lên nhé, mình tin bạn có thể làm được vì bài này rất cơ bản mà, cứ lần theo những gợi ý ở trên là là được thôi! Thanks! Upvote 0
ptm0412
Bad Excel Member
Thành viên BQT Administrator Tham gia 4/11/07 Bài viết 14,445 Được thích 37,104 Donate (Momo) Giới tính Nam Nghề nghiệp ConsultantDauthivan đã viết: Sau khi được các thày Concogia, Ptm0412 chỉ bảo em đã vận dụng khá thuần thục chức năng F8, thế còn cách sử dụng chức năngMsgbox để kiểm tra thế nào ah? Nhấp chuột vào đây để mở rộng...Kiểm tra thế nào à? Muốn biết trạng thái, giá trị của cái gì, vào lúc nào thì dùng Msgbox cho hiện ra cái đó. Thí dụ muốn biết sau khi chạy câu lệnh nào đó, biến abc có giá trị bao nhiêu, hoặc giá trị Arr(s, 3) là bao nhiêu, chỉ việc thêm câu lệnh: Msgbox abc & chr(10) & Arr(s, 3) Tuy vậy tôi ít dùng cách này. Có nhiều cách khác hay hơn vì 1 là không phải nhấn nút OK đóng Msgbox, 2 là xem giá trị của biến tại bất kỳ thời điểm nào mình muốn. 1. Dùng F8 như các bài trước đây Cò già nói, nhưng không cần mở cửa sổ Locals Windows. Khi 1 dòng code bị tô vàng, nghĩa là code đang bị pause ngay trước khi thực thi dòng lệnh đó. Thử rà chuột vào các biến xem, rà tới biến nào, nó hiện giá trị biến đó. 2. Dùng F8 bị bắt buộc 1 chuyện là mỗi dòng code đều bị ngưng lại. Nếu chỉ muốn xem giá trị biến nào đó trước và sau khi thực thi dòng lệnh thứ 10, bỏ qua các dòng từ 1 đến 9, hãy đánh dấu dòng lệnh 10 và 11 bằng cách click vào lề code, nguyên dòng code sẽ bị tô đỏ sẫm. (Bên topic kia dauthivan đã hòi). Bây giờ chạy code, nó sẽ chạy cái vèo đến dòng 10 và ngưng lại, hãy rà chuột xem giá trị biến lần 1. Nhấn F5, dòng 10 thực thi, code pause tại dòng 11, xem giá trị biến lần 2. Việc này có ích khi ta muốn biết 1 câu lệnh có thực thi đúng ý ta muốn hay không. Dĩ nhiên việc này có thể dùng Msgbox, nhưng mất công nhấn OK. 3. Kết hợp cả cái hay của Msgbox, cả cái hay của đánh dấu tô đỏ code tại dòng mình muốn, (chứ không phải mỗi dòng lệnh mỗi ngưng như F8), mà không cần nhấn OK của MSgbox. Đó là dùng cửa sổ immediate và câu lện Debug.Print Đặc biệt là khi ta muốn biết giá trị của 3 biến a, b, c trong 1 vòng lặp For, sau mỗi vòng lặp nó thay đổi thế nào. Chả lẽ For i = 1 to 100, nhấn OK 100 lần, hoặc rà chuột 100 x 3 lần? Dùng câu lệnh sau trong vòng lặp: Debug.Print i, a, b, c và cho code chạy thoải mái, không ngừng. Sau đó xem tất cả những gì hiện ra trong cửa sổ immediate! Lần chỉnh sửa cuối: 15/1/12 Upvote 0 D
Dauthivan
Thành viên tiêu biểu
Tham gia 15/8/08 Bài viết 565 Được thích 327hoamattroicoi đã viết: Công việc bận quá giờ mới ghé diễn đàn được, hoa còi thử làm theo gợi ý của sư phụ, thanks sư phụ! PHP:Sao chép. Sub inSertRow() Dim fRow, lRow Dim i As Long Dim Clls1 As Range Set Clls1 = Cells(8, 8) fRow = 4 lRow = Cells(65536, 3).End(xlUp).Row For i = lRow + 1 To fRow + 2 Step -1 With Cells(i, 1) If .Value <> "" Or i = lRow + 1 Then .Resize(2, 1).EntireRow.Insert .Offset(-2, 2).Resize(2).Value = Clls1.Resize(2).Value With .Offset(-2, 2).Resize(2) .HorizontalAlignment = xlLeft .Font.FontStyle = "Bold" End With End If End With Next End Sub Nhấp chuột vào đây để mở rộng...Hình như em đang phức tạp hoá vấn đề hoặc do em chưa hiểu đúng bản chất: Em đang suy nghĩ sau khi i=26, sau thi thực hiện xong lệnh .Resize(2, 1).EntireRow.Insert thì lRow =31? (không phải = 29?) vì bản chất vùng được mở rộng thêm 2 dòng mà. Upvote 0
ptm0412
Bad Excel Member
Thành viên BQT Administrator Tham gia 4/11/07 Bài viết 14,445 Được thích 37,104 Donate (Momo) Giới tính Nam Nghề nghiệp Consultant lrow xác định từ trước bằng câu lệnh lRow = Cells(65536, 3).End(xlUp).Row vậy nếu không gán giá trị khác cho biến lRow, thì lRow có thay đổi không? Vả lại, hãy thử đứng ở dòng 29, tô 2 dòng 29, 30, nhấn nút insert row, rồi xem vị trí đứng (dòng 29) có bị thay đổi không? Upvote 0thanhlanh
Thành viên tích cực
Tham gia 21/2/08 Bài viết 858 Được thích 1,211 Mình thì nghĩ dùng vòng lặp For ... Next quét từ trên xuống: For i = 5 To [C65536].End(xlUp).Row + 2 * [A65536].End(xlUp).Value ....... Next Vì cột số thứ tự đã điền đầy đủ Mà sao ở đây chưa có chi phí các dòng : Chi phí trực tiếp khác và cộng chi phí trực tiếp nhỉ? Upvote 0- 1
- 2
Go to page
Tiếp tục Tiếp Last Bạn phải đăng nhập hoặc đăng ký để trả lời bài viết tại đây.Bài viết mới nhất
L Chuyển 600 câu hỏi trắc nghiệm sang excel theo mẫu- linhxinhthat
- Thứ tư lúc 15:52
- Hàm và công thức Excel
- Question
- binhtv69
- 22/11/24
- Lập Trình với Excel
- heocondethuong1235
- Hôm qua, lúc 13:45
- Những vấn đề chung
- nghiemcongdien
- 9/11/24
- Google Spreadsheets
- Question
- DMQ
- Thứ tư lúc 21:16
- Lập Trình với Excel
- Question
- ongke0711
- 6/10/24
- Lập Trình với Excel
- luuviettrung
- Hôm qua, lúc 16:31
- Hỏi đáp những vấn đề khác
- Hoale85
- Hôm qua, lúc 11:16
- Những vấn đề chung
- acrox84
- Thứ tư lúc 11:03
- Làm việc với ngày tháng và thời gian
- jusend
- Thứ tư lúc 16:43
- Giải thích, gỡ rối, xử lý lỗi công thức
- Ks.longvandinh1988
- Hôm qua, lúc 14:17
- Excel và Kế Toán
- Lan Ny
- Hôm qua, lúc 11:55
- Hàm và công thức Excel
- Nguyễn Duy Tuân
- Hôm qua, lúc 09:21
- BLUESOFTS: A-Excel, A-Tools
- GPE-Trợ Lý
- Hôm qua, lúc 10:07
- Học tập Online
- Ngocminh19
- Thứ tư lúc 18:56
- Hàm và công thức Excel
- Question
- MinhKhai
- 20/8/13
- Lập Trình với Excel
- Question
- tienhuy832011
- Thứ ba lúc 20:07
- Lập Trình với Excel
- Question
- Toanke063
- 22/11/24
- Lập Trình với Excel
- Nguyễn Hậu LK
- Thứ tư lúc 16:18
- Hỏi đáp những vấn đề khác
- raygpt
- Thứ ba lúc 22:52
- Hàm và công thức Excel
Thành viên có số lượng bài viết cao nhất tháng
- Hoàng Tuấn 868 152
- ptm0412 81
- VetMini 47
- HUONGHCKT 42
- ongke0711 41
- hoangtuaotrang_hp_vn 35
- SA_DQ 34
- befaint 33
- Tuấn Bụng Bự 31
- bebo021999 31
- BuiQuangThuan 28
- HeSanbi 25
- huuthang_bd 23
- HieuCD 18
- huhumalu 17
- DeTong 16
- CHAOQUAY 16
- Nguyễn Diêu Hiền 15
- Manhhung90 13
- Duy Tùng 9x 13
Thành viên có điểm tương tác cao nhất tháng
- Hoàng Tuấn 868 131
- HUONGHCKT 77
- ptm0412 76
- VetMini 64
- HeSanbi 63
- ongke0711 58
- HieuCD 44
- SA_DQ 44
- BuiQuangThuan 42
- befaint 41
- huuthang_bd 39
- bebo021999 30
- hoangtuaotrang_hp_vn 30
- GPE-Trợ Lý 29
- Phuocam 19
- DeTong 16
- huhumalu 15
- phuongnam366377 12
- CHAOQUAY 12
- Duy Tùng 9x 12
- Trang chủ
- Diễn đàn
- Lập Trình với Excel
- Lập Trình với Excel
- Website này sử dụng cookies. Tiếp tục sử dụng trang này, đồng nghĩa với việc bạn chấp nhận website sử dụng cookies. Chấp nhận Tìm hiểu thêm.…
Từ khóa » Chèn Dòng Có điều Kiện Trong Excel
-
Hướng Dẫn Cách Chèn Thêm Dòng Trong Excel Cực Nhanh, đơn Giản
-
Các Thủ Thuật Chèn Nhanh Dòng Trong Excel, Nhiều Cách Lạ Và Hay
-
Làm Cách Nào để Tự động Chèn Hàng Dựa Trên Giá Trị ô Trong Excel?
-
Top 15 Chèn Dòng Có điều Kiện
-
Top 15 Chèn Thêm Dòng Có điều Kiện
-
Thủ Thuật Thêm Dòng Trong Excel đơn Giản Nhất Có Thể Bạn Chưa Biết?
-
Cách Chèn Dòng Trống Tự động Sau Mỗi Nhóm Trong Excel Với Code ...
-
Thêm Cột Có điều Kiện (Power Query) - Microsoft Support
-
Chèn Thêm Dòng Có điều Kiện Và Tính Tổng Và Lọc Ra Những Dữ Liệu ...
-
Hướng Dẫn Cách Thêm Dòng Trong Excel Nhanh Và Lạ Nhất
-
Những Cách Thêm Dòng Trong Excel Và Những điều Bạn Cần Biết!
-
Cách Thêm Dòng Trong Excel đơn Giản, Nhanh Chóng - Điện Máy XANH
-
5 Cách Thêm Dòng Trong Excel Bằng Phím Tắt Hoặc Thêm Bằng Chuột
-
Tự động Copy Công Thức Khi Thêm Dòng Mới Trong Excel