Các câu hỏi về mảng trong VBA (Array)

Liên hệ QC

viehoai

Thành viên gắn bó
Tham gia
22/5/09
Bài viết
2,600
Được thích
2,907
Xin các anh chị giúp đỡ Code Gán các giá trị của một Range là các phần tử của Mãng
Ví dụ: Tôi có các giá trị của Range("A1:A10"). Tôi muốn viết code để gán giá trị của các cells từ A1:A10 là các phần tử của Mãng Arr chẳn hạn.
Xin cảm ơn các anh chị
 
Vì sao không thể tách riêng? Thông thường người ta viết code xử lý 1 bảng sau đó gọi lại nhiều lần để thực hiện trên nhiều bảng.
Vâng, vì em đang dùng cách đó để xử lý cho cả sheet, mà 1 sheet của em gồm gần 100 bảng nhỏ, mỗi bảng lại có số lượng dòng khác nhau (từ 5 đến 30 dòng trong mỗi bảng nhỏ),
Có lẽ với sức của em thì em chỉ xử lý gộp được như vậy thôi ạ, thêm vào các hướng dẫn của các anh ở trên thì em đã thấy tốt hơn trước nhiều rồi,
Khi nào có thắc mắc em xin phép lên thỉnh giáo tiếp ạ.
 
Upvote 0
Chào mọi người, mình hiện tại có 1 bảng tính cần lọc dữ liệu của bảng tính đấy theo vùng dữ liệu. Ví dụ mình có 1 bảng tính dữ liệu từ A1:E1000 và mình muốn lọc dữ liệu bảng tính đó từ địa chỉ S3:S20 bằng VBA, hiện tại mình chỉ làm được lọc giá trị với từng ô địa chỉ theo code sau:

Sub Autofiler()

Dim Loc As Variant

Loc = Array([S3], [S4], [S5], [S6])

Range("A1", Range("A" & Rows.Count).End(xlUp)).AutoFilter 4, Loc, xlFilterValues, , 0

End Sub

mong được sự giúp đỡ của mọi người. mình xin cám ơn.
Gửi cái file lên xem nào bạn.
 
Upvote 0
Chào mọi người, mình hiện tại có 1 bảng tính cần lọc dữ liệu của bảng tính đấy theo vùng dữ liệu. Ví dụ mình có 1 bảng tính dữ liệu từ A1:E1000 và mình muốn lọc dữ liệu bảng tính đó từ địa chỉ S3:S20 bằng VBA, hiện tại mình chỉ làm được lọc giá trị với từng ô địa chỉ theo code sau:

Sub Autofiler()

Dim Loc As Variant

Loc = Array([S3], [S4], [S5], [S6])

Range("A1", Range("A" & Rows.Count).End(xlUp)).AutoFilter 4, Loc, xlFilterValues, , 0

End Sub

mong được sự giúp đỡ của mọi người. mình xin cám ơn.
Chắc là vầy chăng
Mã:
Sub Autofiler()
Dim Loc As Variant, i as Long
Loc = Array([S3], [S4], [S5], [S6])
for i = 0 to ubound(loc)
    Range("A1:E"& Range("A" & Rows.Count).End(xlUp).row).AutoFilter 4, Loc(i)
next
End Sub
 
Upvote 0
Người ta lọc cột thứ 4 tính từ cột A cơ mà

PHP:
Sub vidu
Dim ws as worksheet, lastRow as long
Dim mangDieuKien As Variant
set ws = sheet1
with ws
mangDieuKien = Array(.range("S3").value, .range("S4").value, .range("S5").value, .range("S6").value) 'Mới học thì viết cho rõ ràng ra, đừng có dùng mấy [ ]. '
lastRow = .range("A" & .rows.count).end(xlUp).row
if lastRow = 1 then exit sub
.Range("E1:E" & lastRow).AutoFilter Field:=1, Criteria1:=mangDieuKien, xlFilterValues 'Lọc cột nào thì tạo lọc ở cột đó thôi, thì mới 'ngon', nhẹ nhàng.
End with
End sub
 
Upvote 0
Đây bạn ơi, bạn xem dùm mình với ạ, mình muốn lọc nhiều giá trị trong cột S cùng lúc, nghĩa là có bao nhiêu thì lọc bấy nhiêu ấy ạ, Cám ơn
Thử thế này coi nào, Nên viết rõ ràng biến và làm việc trên sheets nào ra bạn ạ
Mã:
Sub Autofilter()

'Loc theo gia tri co san theo tung dia chi
With Sheet1
Dim Loc As Variant
    Loc = Array(.[S2].Value, .[S3].Value, .[S4].Value, .[S5].Value, .[S6].Value)
    .Range("A1:E" & .Range("A" & Rows.Count).End(xlUp).Row).Autofilter 4, Loc, xlFilterValues
End With
End Sub
 
Upvote 0
Mong các Anh/Chị trên diễn đàn viết giúp sub Vba thực hiện cộng tịnh tiến số tự nhiên ak!. Nội dung được em viết trong file đính kèm anh.
Mong các Anh/Chị giúp cho!
 

File đính kèm

  • Kính mong các Anh chị trong diễn đàn giúp cho.xlsm
    10.5 KB · Đọc: 8
Upvote 0
Mong các Anh/Chị trên diễn đàn viết giúp sub Vba thực hiện cộng tịnh tiến số tự nhiên ak!. Nội dung được em viết trong file đính kèm anh.
Mong các Anh/Chị giúp cho!
Tạo chủ đề mới đi bạn, giải thích rõ ràng vào, trong bài có nói tới phần bôi màu nâu mà chả thấy đâu.
 
Upvote 0
Tạo chủ đề mới đi bạn, giải thích rõ ràng vào, trong bài có nói tới phần bôi màu nâu mà chả thấy đâu.
dạ Bác thông cảm ak,!em xin gửi lại file mong Bác bớt chút thời gian code giúp em. Nội dung em viết trong file rồi ak!
 

File đính kèm

  • Kính gửi Bác. Mong Bác giúp cho!.xlsm
    10.6 KB · Đọc: 12
Upvote 0
dạ Bác thông cảm ak,!em xin gửi lại file mong Bác bớt chút thời gian code giúp em. Nội dung em viết trong file rồi ak!
Thử code này:
Mã:
Option Explicit
Sub TinhTien()
Dim I As Long, J As Long, R As Long, C As Long, Arr1(), Arr2()
With Sheets("Sheet1")
    Arr1 = .Range("A2:L11").Value
    Arr2 = .Range("A2:L11").Value
    R = UBound(Arr1, 1): C = UBound(Arr1, 2)
    For I = 2 To R
        For J = 1 To C
            Arr1(I, J) = Arr1(I - 1, J) + 1
            Arr2(I, J) = (Arr2(I - 1, J) + 1) Mod 10
        Next
    Next
    .Range("A2").Resize(R, C) = Arr1
    .Range("A14").Resize(R, C) = Arr2
End With
End Sub
 
Upvote 0
dạ Bác thông cảm ak,!em xin gửi lại file mong Bác bớt chút thời gian code giúp em. Nội dung em viết trong file rồi ak!

Thành viên này phạm lỗi chen ngang bài cuả người khác nhé.
(bài #13 ở thớt này)
 
Upvote 0
This thành viên phạm vi chen ngang bài báo khác người dùng nhé.
(bài # 13 ở đây)
[URL opensurl = "true"] https://www.giaiphapexcel.com/diendan/threads/l%C3%A0m-th%E1%BA%BF-n%C3%A0o-%C4%91%E1%BB % 83-hi% E1% BB% 83n-th% E1% BB% 8B-th% C3% B4ng-b% C3% A1o-l% E1% BB% 97i-chi-ti% E1% BA% BFt-trong -qu% C3% A1-tr% C3% ACnh.159555 / [/ URL]
dạ xin lỗi Anh em mới sử dụng nên không biết cách tạo chủ đề, mở bài post mới nên mong Các Anh bỏ qua cho. Em xin rút kinh nghiệm ak!
 
Upvote 0
Xin minh chính với mọi thành viên khác là tôi không có tật dùng tiếng Tây bồi.

Bài này rõ ràng là trích dẫn bài #1515, nhưng cố tình sửa lời của tôi. Không rõ người viết có ý định gì.

1646628024378.png
 
Upvote 0
Em chào các anh chị trong GPE,
em có bài toán như hình, nếu dùng mảng thì làm như thế nào hợp lý ạ?
Mong các anh chị giúp đỡ.
1653356484100.png
 
Upvote 0
Upvote 0
Vậy giờ hướng dẫn cũng như hình à bạn.Đính kèm cái file lên chứ mà kết quả nó như thế nào nhỉ.
Em gửi file ạ.
dạ kết quả như thế này anh ạ, xét thêm trường hợp tất cả đều "x" thì thông báo: danh sách cần lọc không tồn tại
1653359083771.png
 

File đính kèm

  • baitap.xlsx
    9.9 KB · Đọc: 12
Upvote 0
Em gửi file ạ.
dạ kết quả như thế này anh ạ, xét thêm trường hợp tất cả đều "x" thì thông báo: danh sách cần lọc không tồn tại
Bài này là bạn hỏi cách dùng mảng hay nhờ code giùm?
Nếu hỏi cách dùng thì đưa code của bạn lên, người ta sẽ chỉ cho cách chỉnh. Học như thế căn bản vững chắc hơn.
Hiện tại bạn chỉ gởi file không có code, có vẻ như ý của bạn là nhờ code giùm.

Chú thích:
Bài này đáng lẽ người ta dùng transpose và advanced filter, code là dở.
Ở GPE này người ta thích code cho nó le thôi. Trên thực tế, cái nào làm tay được thì tốt hơn.
 
Upvote 0
Bài này là bạn hỏi cách dùng mảng hay nhờ code giùm?
Nếu hỏi cách dùng thì đưa code của bạn lên, người ta sẽ chỉ cho cách chỉnh. Học như thế căn bản vững chắc hơn.
Hiện tại bạn chỉ gởi file không có code, có vẻ như ý của bạn là nhờ code giùm.

Chú thích:
Bài này đáng lẽ người ta dùng transpose và advanced filter, code là dở.
Ở GPE này người ta thích code cho nó le thôi. Trên thực tế, cái nào làm tay được thì tốt hơn.
Dạ đúng rồi anh, y như anh nói,em làm transpose rồi filter. cái này làm cái rẹt là xong.
Nhưng muốn nâng cao kiến thức, em đọc bài mảng này hay quá, nên mạn phép gửi lên đây để các anh xem xét ì mà,hì.
 
Upvote 0
Buồn buồn làm chơi:
Mã:
Option Explicit
Sub test()
Dim k&, count&, cell As Range, arr(), rng As Range
Set rng = Worksheets("Sheet1").Range("A3:F3")
count = WorksheetFunction.CountIf(rng, "o")
    If count = 0 Then
        MsgBox "Danh sach rong"
        Exit Sub
    End If
ReDim arr(1 To count, 1 To 2)
    For Each cell In rng
        If cell.Value = "o" Then
            k = k + 1
            arr(k, 1) = cell.Offset(-2, 0).Value
            arr(k, 2) = cell.Offset(-1, 0).Value
        End If
    Next
Worksheets("Sheet2").Range("A2").Resize(k, 2).Value = arr
End Sub
 
Upvote 0
Web KT
Back
Top Bottom