Giúp em làm Macro thay đổi và xuất dữ liệu.

Liên hệ QC

huyen_156

Thành viên mới
Tham gia
8/5/11
Bài viết
6
Được thích
0
Kính gửi các anh chị! em có 1 bảng nhập liệu chiết xuất kết quả cần làm bằng Macro nhưng em không biết nhiều về Macro lắm nên nhờ anh chị giúp.
Bảng được thiết kế như file đính kèm!
Nhờ anh chị giúp em phần khó nhất là đạt điều kiện thì tự xuất sang bảng kết quả. Mong các anh chị giúp đỡ.
 

File đính kèm

Bạn kiểm theo file xem ưng chưa

Mình thực hiện theo trình tự từ trái sang fải
 

File đính kèm

Upvote 0
Không biết việc cho số chạy ở vùng bên dưới có thực sự cần thiết đối với bạn không. Nếu không cần thiết thì đây là một tham khảo dành cho bạn (nhấn Ctrl+E để chạy code nhé):
PHP:
Sub XuatKQ()
    Dim GT1 As Range, GT2 As Range, GT3 As Range, GT4 As Range, GT5 As Range, KQ As Range, i As Integer
    Sheet1.Activate
    [D4].CurrentRegion.Copy [T2]
    For i = 0 To 4
        [T:T].Offset(, i).RemoveDuplicates 1, xlYes
    Next
    [M3:R65536].Clear
    For Each GT1 In Range([T3], [T65536].End(3))
        For Each GT2 In Range([U3], [U65536].End(3))
            For Each GT3 In Range([V3], [V65536].End(3))
                For Each GT4 In Range([W3], [W65536].End(3))
                    For Each GT5 In Range([X3], [X65536].End(3))
                        If GT1 + GT2 + GT3 + GT4 + GT5 > 35 Then
                            Set KQ = [M65536].End(3).Offset(1)
                            KQ = GT1
                            KQ.Offset(, 1) = GT2
                            KQ.Offset(, 2) = GT3
                            KQ.Offset(, 3) = GT4
                            KQ.Offset(, 4) = GT5
                            KQ.Offset(, 5) = WorksheetFunction.Sum(KQ.Resize(, 5))
                        End If
                    Next
                Next
            Next
        Next
    Next
    [T:X].Clear
End Sub
Tuy code chạy chậm nhưng nó lọc các kết quả trùng nhau. Nếu không muốn lọc kết quả trùng thì khỏi cần copy sang vùng tạm và khỏi cần RemoveDuplicates.
 

File đính kèm

Upvote 0
Em đã làm được như mong muốn, cảm ơn các anh nhiều
 
Lần chỉnh sửa cuối:
Upvote 0
Anh chị cho em hỏi muốn xuất kết quả sang 1 sheet khác thì thay đổi công thức ra sao. Cảm ơn file của anh chị đã giải quyết giúp em 1 vấn đề nan giải trong 1 thời gian rất ngắn.
Mong anh chị giúp em nốt phần xuất dữ liệu sang 1 sheet khác với ạ,
Bạn thay đoạn:
PHP:
With [M65500].End(xlUp).Offset(1)
     .Resize(, 6).Value = [D15].Resize(, 6).Value
End With
thành:
PHP:
With Sheets("Tên sheet").[M65500].End(xlUp).Offset(1)
     .Resize(, 6).Value = [D15].Resize(, 6).Value
End With
 
Upvote 0
Câu lệnh With đó bạn, cụ thể nha:

Mã:
 With [M65500].End(xlUp).Offset(1)
                               .Resize(, 6).Value = [D15].Resize(, 6).Value
  End With
Nếu giờ bạn muốn chép đến trang tính có tên 'GPE' tại cột bắt đầu là cộ 'B' thì câu lệnh sẽ là:
PHP:
 With Sheets("GPE").[B65500].End(xlUp).Offset(1)
     .Resize(, 6).Value = [D15].Resize(, 6).Value
 End With
(hắc bạn tự ên được!
 
Upvote 0
anh chị cho em hỏi thêm một chút với ạ.
Em sửa lại Macro cho phù hợp với bảng của em và đã xuất dữ liệu tìm sang 1 sheet mới. Em đã save Macro và save file lại! sau khi đóng cửa sổ excel, em mở file lại thì mất Macro em đã lưu.
Làm đi làm lại đều bị như vậy (em dùng Office 2010) kính mong anh chị chỉ giúp em với...
 
Upvote 0
anh chị cho em hỏi thêm một chút với ạ.
Em sửa lại Macro cho phù hợp với bảng của em và đã xuất dữ liệu tìm sang 1 sheet mới. Em đã save Macro và save file lại! sau khi đóng cửa sổ excel, em mở file lại thì mất Macro em đã lưu.
Làm đi làm lại đều bị như vậy (em dùng Office 2010) kính mong anh chị chỉ giúp em với...
khi lưu file lại bạn lưu file đó đuôi *xls( phiên bản cho excel 2003) nó mới lưu được code bạn viết.
 
Upvote 0
hi, đúng là lưu .xlsx nó không có macro thật! cảm ơn nhiều :)
 
Upvote 0
khi lưu file lại bạn lưu file đó đuôi *xls( phiên bản cho excel 2003) nó mới lưu được code bạn viết.
hi, đúng là lưu .xlsx nó không có macro thật! cảm ơn nhiều :)
Nếu muốn lưu ở định dạng Excel 2007, 2010 thì cần phải lưu ở định dạng .xlsm (Excel Enabled-Macro Workbook) mới có thể lưu được các Macro trong file.
 
Upvote 0
Chúc các anh chị 1 tuần mới vui vẻ và hạnh phúc.
Em lại làm phiền các anh một chút mong các anh giúp đỡ. Dựa trên file của anh ChanhTQ@ đã làm cho em, mong các anh chỉnh sửa giúp 2 vấn đề.

Yêu cầu chung: - Kết quả không được trùng (có 2 giá trị giống nhau trong 1 kết quả).
- Không được chứa dấu ""

I. Vấn đề 1 (sheet Bài 1)

- Yêu cầu của em là:
1. Kết quả không được có giá trị trùng nhau( ví dụ 5;5;5;5;4..) vì vậy các bác giúp em tránh tìm khi đã có giá trị giống. Ví dụ nó tìm 5;5;5;5;5 xong 5;5;5;5;6... rất mất thời gian.
2. Sẽ có rất nhiều kết quả sau khi tìm thấy. chỉ cho ra 1 đáp án (4x4=16KQ trùng nhau). Các bác giúp em loại kết quả trùng với ạ.

II. Vấn đề 2: (sheet Bài 2)
Yêu cầu của em là:
Trường hợp có thêm điều kiện: khi giá trị 1,2 không đổi, giá trị 4,5 sẽ phụ thuộc vào giá trị 3.
Như vậy khi ô F12 thay đổi thì các bảng màu vàng và màu xanh sẽ xuất hiện giá trị ="" là ô trắng nhưng nó vẫn tìm kiếm qua các ô này dẫn đến mất thời gian mà kết quả ko đúng.
Các anh giúp em tìm bỏ qua các ô trắng (chứa ký tự "").

III. Vấn đề 3.
Tạo nút chạy để kick vào là chạy Macro trong excel 2010 em không được rành nhưng em sẽ cố gắng tìm kiếm trong diễn đàn.

Một lần nữa cảm ơn các anh.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Chúc các anh chị 1 tuần mới vui vẻ và hạnh phúc.
Em lại làm phiền các anh một chút mong các anh giúp đỡ. Dựa trên file của anh ChanhTQ@ đã làm cho em, mong các anh chỉnh sửa giúp 2 vấn đề.

Yêu cầu chung: - Kết quả không được trùng (có 2 giá trị giống nhau trong 1 kết quả).
- Không được chứa dấu ""

I. Vấn đề 1 (sheet Bài 1)

- Yêu cầu của em là:
1. Kết quả không được có giá trị trùng nhau( ví dụ 5;5;5;5;4..) vì vậy các bác giúp em tránh tìm khi đã có giá trị giống. Ví dụ nó tìm 5;5;5;5;5 xong 5;5;5;5;6... rất mất thời gian.
2. Sẽ có rất nhiều kết quả sau khi tìm thấy. chỉ cho ra 1 đáp án (4x4=16KQ trùng nhau). Các bác giúp em loại kết quả trùng với ạ.

II. Vấn đề 2: (sheet Bài 2)
Yêu cầu của em là:
Trường hợp có thêm điều kiện: khi giá trị 1,2 không đổi, giá trị 4,5 sẽ phụ thuộc vào giá trị 3.
Như vậy khi ô F12 thay đổi thì các bảng màu vàng và màu xanh sẽ xuất hiện giá trị ="" là ô trắng nhưng nó vẫn tìm kiếm qua các ô này dẫn đến mất thời gian mà kết quả ko đúng.
Các anh giúp em tìm bỏ qua các ô trắng (chứa ký tự "").

III. Vấn đề 3.
Tạo nút chạy để kick vào là chạy Macro trong excel 2010
Một lần nữa cảm ơn các anh.
Em đã cố gắng tìm kiếm trong diễn đàn và đã làm được nhưng không hiểu cách làm 2 Button trên 2 sheet. Nhờ các anh chỉ giúp, em gửi lại file mới kèm theo
 

File đính kèm

Upvote 0
Kính gửi anh chị. EM đã tìm được ra cách vừa khử trùng được và vừa không bị lặp! nhưng em không biết đưa hàm Countif vào VBA.
For J2 = 6 To MW(2)
For J3 = 6 To MW(3)
For J4 = 6 To MW(4)
For J5 = 6 To MW(5)
Giúp em sau khi về Giá trị 1 tăng từ 1 thành 2 thì sẽ thành
For J2 = 6 + 1 To MW(2)
For J3 = 6 + 1 To MW(3)
For J4 = 6 + 1To MW(4)
For J5 = 6 + 1 To MW(5)
Mong anh chị giúp.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom