Giải pháp nào để tăng tốc độ cho bảng tính.

Liên hệ QC
Gửi bạn TrungChinhs đúng như lời sealand nói,tôi muốn kẻ nét đứt cho các viền dòng giữa và bao kép cho viền ngoài. Bạn bày tôi phát triển cái code ở trên với.

Để kẻ một bảng thông thường (kẻ dọc, ngang), ta chỉ cần 3 loại đường kẻ:
- Đường kẻ đứng
- Đường kẻ ngang
- Đường bao quanh.

Đường kẻ có 12 kiểu: nét liền hoặc nét đứt; nét đậm hoặc nét mảnh; nét đơn hoặc nét đôi; hoặc là sự phối hợp giữa các kiểu nét này

Các bạn chọn 1 vùng ít nhất là 4 ô (2 cột, 2 dòng) và lần lượt thay các số từ 1 đến 12 vào số màu đỏ để Test tìm kiểu nét:

Mã:
Sub Test_Bodress()
    With Selection
        .Borders.LineStyle = 0                'Xoa duong ke cu (neu co)
        .BorderAround [SIZE=4][COLOR=#ff0000][B]1 [/B][/COLOR][/SIZE]                     'Duong bao quanh, thay vao so 1 cac so tu 1 den 12 de thu
        .Borders(11).LineStyle = [SIZE=4][COLOR=#ff0000][B]1 [/B][/COLOR][/SIZE]          'Duong ke dung
        .Borders(12).LineStyle = [SIZE=4][COLOR=#ff0000][B]1[/B][/COLOR][/SIZE]           'Duong ke ngang
    End With
End Sub


Đối với bảng theo yêu cầu của bạn thì Code như sau:
Mã:
Sub Bodress()
    With Selection
        .Borders.LineStyle = 0          ' Xoa duong ke cu
        .BorderAround 9                 ' Duong bao quanh net doi
        .Borders(11).LineStyle = 1      ' Duong dung net lien
        .Borders(12).LineStyle = 2      ' Duong ngang net dut
    End With
End Sub
 
Lần chỉnh sửa cuối:
Kính gửi các anh chị trên diễn đàn!
Vừa qua có các anh, chị: Sa_DQ, HYen17, Concogia, Trungchinhs, bác SeaLand và nhiều người khác..giúp nên phần 1 công việc đã cơ bản xong, xin cảm ơn tất cả. Vẫn loanh quanh ở cái dữ liệu trên, tôi tiếp tục nhờ mọi người giúp sức:
Cụ thể là: Rất nhiều dữ liệu từ phần mềm trút ra nó nằm ở từng Sheet, bây giờ làm sao nó tự động chuyển qua Sheet DATA thông qua một cái nút bấm. Tuy trên diễn đàn có nhiều trang đã nói rõ, nhưng công việc ở đây hơi đặc thù, mong mọi người thông cảm giúp đỡ (nhờ các bác xem File).
 

File đính kèm

Lần chỉnh sửa cuối:
Cảm ơn Sealand! Có cái menu xổ ra xem sướng mắt thật .
Có lẽ mình nói chưa kỹ nên bên Sheet đích dữ liệu bị lệch qua trái một cột.
Bạn sửa giúp mình Chuyển toàn bộ dữ liệu sang phải 1 cột. Riêng dữ liệu tên tờ bản đồ ở bên Sheet nguồn kg có số liệu thì lấy luôn tên của Sheet đưa vào cột A trong Sheet DATA.
Khi nào rảnh bạn giúp mình việc này với: Tại Sheet DATA mình muốn làm cái menu ấy cho các bảng bữa trước " đặt tên cái nút bấm là báo cáo" mở cái báo cáo
ra trong đó chỉ ra các mẫu chi tiết tương ứng với mỗi bảng.
 

File đính kèm

  • Hinh_1.jpg
    Hinh_1.jpg
    51.5 KB · Đọc: 44
Lần chỉnh sửa cuối:
Tranh thủ buổi trưa nên test không kỹ, thông cảm nha.
Bạn sửa ở đoạn Code này:

Mã:
Private Sub CommandButton1_Click()
Dim Dg, Tb, i, Cl1 As Range, Rg As Range, Sh As Worksheet
If Me.ListBox1.ListCount = 0 Then Exit Sub
If Me.CheckBox1.Value Then
Set Cl1 = Sheet6.[[B][COLOR=#ff0000]A[/COLOR][/B]65536].End(3).Offset(1)
If Cl1.Row < 4 Then Set Cl1 = Sheet6.[[B][COLOR=#ff0000]A[/COLOR][/B]4]
Else
Sheet6.[[B][COLOR=#ff0000]A[/COLOR][/B]4:E65536].ClearContents
Set Cl1 = Sheet6.[[B][COLOR=#ff0000]A[/COLOR][/B]4]
End If
For i = 0 To Me.ListBox1.ListCount - 1
If Me.ListBox1.Selected(i) = True Then
Set Sh = ThisWorkbook.Sheets(Me.ListBox1.List(i, 0))
Set Rg = Sh.Range("B10:E" & Sh.[B10].End(4).Row - 1)
Rg.Copy Cl1
[B][COLOR=#ff0000]Sheet6.Cells(Cl1.Row, "A").Resize(Rg.Rows.Count).Cells.Value = Me.ListBox1.List(i, 0)[/COLOR][/B]
Set Cl1 = Cl1.Offset(Rg.Rows.Count)
Dg = Dg + Rg.Rows.Count
End If
Next
Tb = IIf(Me.CheckBox1, "Ban chep noi " & Dg & " dong du lieu.", _
"Ban tao moi data voi " & Dg & " dong du lieu.")
Unload Me
MsgBox Tb, , "GPE"
End Sub

Bạn đổi mấy chữ A màu đỏ thành chữ B và thêm dòng màu đỏ là được. Hay chép đoan code sau đè vào:
Mã:
Private Sub CommandButton1_Click()
Dim Dg, Tb, i, Cl1 As Range, Rg As Range, Sh As Worksheet
If Me.ListBox1.ListCount = 0 Then Exit Sub
If Me.CheckBox1.Value Then
Set Cl1 = Sheet6.[B65536].End(3).Offset(1)
If Cl1.Row < 4 Then Set Cl1 = Sheet6.[B4]
Else
Sheet6.[A4:E65536].ClearContents
Set Cl1 = Sheet6.[B4]
End If
For i = 0 To Me.ListBox1.ListCount - 1
If Me.ListBox1.Selected(i) = True Then
Set Sh = ThisWorkbook.Sheets(Me.ListBox1.List(i, 0))
Set Rg = Sh.Range("B10:E" & Sh.[B10].End(4).Row - 1)
Rg.Copy Cl1
Sheet6.Cells(Cl1.Row, "A").Resize(Rg.Rows.Count).Cells.Value = Me.ListBox1.List(i, 0)
Set Cl1 = Cl1.Offset(Rg.Rows.Count)
Dg = Dg + Rg.Rows.Count
End If
Next
Tb = IIf(Me.CheckBox1, "Ban chep noi " & Dg & " dong du lieu.", _
"Ban tao moi data voi " & Dg & " dong du lieu.")
Unload Me
MsgBox Tb, , "GPE"
End Sub
 
Lần chỉnh sửa cuối:
Đc rồi Sealand ơi!
Bạn kiểm tra sửa giúp, khi bỏ kiểm để nhập DATA mới cái cột A "tên mảnh " nó vẫn còn ở đó. Làm sao khi "bỏ xóa " là hắn xóa luôn theo những dữ liệu khác.
 
Nó ở đây:
..............................

1.If Me.CheckBox1.Value Then
2.Set Cl1 = Sheet6.[A65536].End(3).Offset(1)
3.If Cl1.Row < 4 Then Set Cl1 = Sheet6.[A4]
4.Else
5.Sheet6.[A4:E65536].ClearContents
6.Set Cl1 = Sheet6.[A4]
7.End If


Lưu ý, chữ A màu đỏ ở dòng 5 không đổi vẫn là chữ A
 
Sealand ơi!
Không biết nhầm chỗ nào trong Code mà hắn chỉ tổng hợp những Sheet có chữ "B" nếu lic toàn bộ.
Còn lic 1 Sheet thì kg sao! Bạn kiểm tra giúp.
 

File đính kèm

Sealand ơi!
Không biết nhầm chỗ nào trong Code mà hắn chỉ tổng hợp những Sheet có chữ "B" nếu lic toàn bộ.
Còn lic 1 Sheet thì kg sao! Bạn kiểm tra giúp.
Bạn sửa code của cái CommandButton1 lại như thế này:
PHP:
Private Sub CommandButton1_Click()
Dim Dg, Tb, i, Cl1 As Range, Rg As Range, Sh As Worksheet
If Me.ListBox1.ListCount = 0 Then Exit Sub
If Me.CheckBox1.Value Then
    Set Cl1 = Sheet6.[B65536].End(3).Offset(1)
Else
    Sheet6.[A4:E65536].ClearContents
    Set Cl1 = Sheet6.[B4]
End If
For i = 0 To Me.ListBox1.ListCount - 1
    If Me.ListBox1.Selected(i) = True Then
        Set Sh = ThisWorkbook.Sheets(Me.ListBox1.List(i, 0))
        Set Rg = Sh.Range("B10:E" & Sh.[B10].End(4).Row - 1)
        Rg.Copy Cl1
        Cl1.Offset(, -1).Resize(Rg.Rows.Count).Value = Me.ListBox1.List(i, 0)
        Dg = Dg + Rg.Rows.Count
        Set Cl1 = Sheet6.[B65536].End(3).Offset(1)
    End If
Next
Tb = IIf(Me.CheckBox1, "Ban chep noi " & Dg & " dong du lieu.", _
"Ban tao moi data voi " & Dg & " dong du lieu.")
Unload Me
MsgBox Tb, , "GPE"
End Sub
 
Cảm ơn bạn Huuthang_BD! (lần đầu tiên gặp, xưng Bạn cho đỡ khách xáo, bạn thông cảm nhé).
Cái bạn giúp..nó chạy ngon rồi. Mình hỏi bạn thêm:
Ở các sheet nguồn do anh em để thứ tự các cột không đồng nhất, nơi thì thế này nơi thì thế kia, rồi phần khoảng trên tiêu đề nơi thì 6 hàng nơi thì 7 hoặc 8,9 vv.. vậy bài toán mình muốn nhờ là xử lý cái Code sao cho trong mọi trường hợp kể trên bên Sheet DATA vẫn tổng hợp đúng (Lấy "tên cột" bên Sheet DATA làm tiêu chí - chuẩn).
Mình nhờ tất cả mọi người giúp tay.
 
Đã nói đến Code (To tát 1 chút là lập trình) thì dữ liệu càng chuẩn mực càng đơn giản vấn đề.
Hơn nữa, bạn nói đây là tổng hợp dữ liệu của phần mềm khác kết xuất ra. Vậy thì không lẽ nào mỗi bảng 1 kiểu. Nếu để tuỳ ý thì cũng phải có 1 cái gì đó như tiê đề cột chẳng hạn để nhận diện thì mới biêt là lấy từ đâu chớ
 
Cảm ơn bạn Huuthang_BD! (lần đầu tiên gặp, xưng Bạn cho đỡ khách xáo, bạn thông cảm nhé).
Cái bạn giúp..nó chạy ngon rồi. Mình hỏi bạn thêm:
Ở các sheet nguồn do anh em để thứ tự các cột không đồng nhất, nơi thì thế này nơi thì thế kia, rồi phần khoảng trên tiêu đề nơi thì 6 hàng nơi thì 7 hoặc 8,9 vv.. vậy bài toán mình muốn nhờ là xử lý cái Code sao cho trong mọi trường hợp kể trên bên Sheet DATA vẫn tổng hợp đúng (Lấy "tên cột" bên Sheet DATA làm tiêu chí - chuẩn).
Mình nhờ tất cả mọi người giúp tay.
Bạn hãy đưa tất cả các kiểu dữ liệu có thể có vào chung một file và gửi lên xem. Được hay không cũng còn tùy vào mớ hỗn độn đó có một quy tắc chung nào không.
 
Mình gửi luôn đây! bạn xem giúp, có gì mình bổ sung thêm.
 

File đính kèm

Đã nói đến Code (To tát 1 chút là lập trình) thì dữ liệu càng chuẩn mực càng đơn giản vấn đề.
Hơn nữa, bạn nói đây là tổng hợp dữ liệu của phần mềm khác kết xuất ra. Vậy thì không lẽ nào mỗi bảng 1 kiểu. Nếu để tuỳ ý thì cũng phải có 1 cái gì đó như tiê đề cột chẳng hạn để nhận diện thì mới biêt là lấy từ đâu chớ
Cảm ơn sealand!
Đúng là khi kết xuất từ phần mềm các cột tiêu đề đều giống nhau. Tuy nhiên là tiếng việt đều kg có dấu, vì vậy trong quá trình anh em sửa thêm bớt mỗi người làm một kiều, nhưng chủ yếu họ dữ cái dữ liệu là chính. bạn xem sử giúp nhé.
 
Cảm ơn sealand!
Đúng là khi kết xuất từ phần mềm các cột tiêu đề đều giống nhau. Tuy nhiên là tiếng việt đều kg có dấu, vì vậy trong quá trình anh em sửa thêm bớt mỗi người làm một kiều, nhưng chủ yếu họ dữ cái dữ liệu là chính. bạn xem sử giúp nhé.
Nếu dữ liệu được xuất từ phần mềm thì có lẽ không nên làm thêm nữa vì cũng như anh sealand đã nói dữ liệu càng chuẩn thì giải quyết càng đơn giản. Thay vì cố đi theo người ta mà chưa biết người ta dẫn mình đi đâu thì hãy dẫn họ theo mình.
Ở trường hợp của bạn, Giá trị các ô tiêu đề không ảnh hưởng đến kết quả khi sử dụng code cũ. Vậy, bạn hãy yêu cầu mọi người không được thêm bớt dòng cột mà chỉ chỉnh sửa các tiêu đề mà thôi, yêu cầu này có lẽ không đến nỗi quá khó.
 
Nếu dữ liệu được xuất từ phần mềm thì có lẽ không nên làm thêm nữa vì cũng như anh sealand đã nói dữ liệu càng chuẩn thì giải quyết càng đơn giản. Thay vì cố đi theo người ta mà chưa biết người ta dẫn mình đi đâu thì hãy dẫn họ theo mình.
Buồn ơi!
Đúng là mình đòi hỏi thái quá! Gửi các bác cái File, một dạng nguyên gốc từ phần mềm Microtion ..xuất ra.
Ở trường hợp của bạn, Giá trị các ô tiêu đề không ảnh hưởng đến kết quả khi sử dụng code cũ. Vậy, bạn hãy yêu cầu mọi người không được thêm bớt dòng cột mà chỉ chỉnh sửa các tiêu đề mà thôi, yêu cầu này có lẽ không đến nỗi quá khó.
Chỉ thêm vài ký tự là ổn nhưng với mình mò mẫm lâu lắm, chắc gì đã xong. Hỏi các chuyên gia biết thể nào cũng bị la, nhưng bây giờ làm sao đây.
 
Lần chỉnh sửa cuối:
Nếu không nhầm thì tình hình sẽ như thế này:
-Phần mềm sẽ kết xuất ra n file có cấu trúc hệt như dc9
-Tốt nhất bạn đừng làm gì cả mà chỉ chép tất chúng vào thu mục nào đó.
-Viết code tổng hợp chung n file vào 1 sheet.
-Bạn giải thích cho anh em rõ ý nghĩa từng cột trong dc9 và mục dích tổng hợp như thế nào.

Như vậy, đỡ bàn đi tính lại nhiều.
 
Nếu đã đồng ý thì giờ bạn đưa lên khoảng 2-3 file kết xuất đảm bảo nguyên gốc và yêu cầu tổng hợp ra sao, anh em sẽ giúp bạn
 
Nếu đã đồng ý thì giờ bạn đưa lên khoảng 2-3 file kết xuất đảm bảo nguyên gốc và yêu cầu tổng hợp ra sao, anh em sẽ giúp bạn
Thế thì tốt quá nhờ tất cả mọi người.

Trong File gửi có thêm các mẫu File Word (có 3 mẫu theo hướng dẫn của Bộ TN&MT)
nhờ các bác xem hướng dẫn trong File luôn.
Trong thư mục "Tonghop_A" có 3 File Excel nguyên mẫu nhờ các bác xử lý ra luôn các mẫu theo File Word ở trên, tuy nhiên mình có ý kiến riêng tạo thêm File thứ 4 (mọi tổng hợp báo cáo nhập xuất ra sẽ đc ghi vào File này). Xong công đoạn đo đạc bản đồ.
Đến công đoạn kê khai cấp giấy CNQSD đất sẽ sử dụng DATA và các báo cáo khác (vừa rồi các bác đã giúp) để làm sẽ trình bày sau.
 

File đính kèm

Thế thì tốt quá nhờ tất cả mọi người.

Trong File gửi có thêm các mẫu File Word (có 3 mẫu theo hướng dẫn của Bộ TN&MT)
nhờ các bác xem hướng dẫn trong File luôn.
Trong thư mục "Tonghop_A" có 3 File Excel nguyên mẫu nhờ các bác xử lý ra luôn các mẫu theo File Word ở trên, tuy nhiên mình có ý kiến riêng tạo thêm File thứ 4 (mọi tổng hợp báo cáo nhập xuất ra sẽ đc ghi vào File này). Xong công đoạn đo đạc bản đồ.
Đến công đoạn kê khai cấp giấy CNQSD đất sẽ sử dụng DATA và các báo cáo khác (vừa rồi các bác đã giúp) để làm sẽ trình bày sau.

Chương trình này tuy không khó lắm nhưng tốn khá nhiều thời gian và công sức, cách làm sẽ diễn ra như sau:
Trong 1 tờ bản đồ có nhiều chủ hộ, mỗi hộ có nhiều thửa đất và tùy theo địa chỉ của các chủ hộ mà trong 1 tờ bản đồ có thể có nhiều địa chỉ (đơn vị hành chính) khác nhau. Vấn đề cần phải giải quyết là phải đưa được các thửa đất của cùng một chủ hộ ở các tờ bản đồ khác nhau về cùng 1 chỗ; tách các hộ ở cùng 1 đơn vị hành chính thành các biểu (Sheet) riêng.... đó là chưa kể đến việc phải kiểm tra các tình huống thường xảy ra như trùng tên chủ hộ, trùng thửa đất, kiểm tra ký hiệu loại đất, tổng hợp số loại của các hộ thành số loại đất của cả đơn vị (thôn)...

Vì vậy mọi người chỉ có thể giúp bạn từng công đoạn mà thôi.
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom