Lọc Filter dữ liệu trong mảng (3 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Tôi tuân thủ nội quy khi đăng bài

heyhey1994

Thành viên chính thức
Tham gia
16/3/17
Bài viết
78
Được thích
17
Chào cả nhà,
Hiện em đang tìm hiểu về mảng của VBA nhưng bị vướng ở chỗ này không biết sao nó cứ báo lỗi, nhờ cả nhà xem giúp ạ.
Em có 3 cột thế này, em đang muốn filter giá trị cột D theo cột A, giá trị nào giống thì lấy giá trị cột B bỏ vào 1 mảng, nhưng ko hiểu sao nó cứ bị lỗi ở chỗ filter, nhờ mọi người giúp với ạ. Với lại có cách nào mình lấy được index cột A, để tra lấy giá trị cột B ko ạ?
Em xin cảm ơn.

Sub Filter_1()

' find last row and last column
Set sht = ActiveSheet
lastrow1 = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row
lastrow2 = sht.Cells(sht.Rows.Count, "D").End(xlUp).Row
LastColumn = sht.Range("B1").CurrentRegion.Columns.Count

Dim PC_property As Variant
Dim PC_BoundaryPoint As Variant
Dim Point As Variant

PC_BoundaryPoint = Range(Cells(3, "A"), Cells(lastrow2, "A"))
For i = 3 To lastrow1
Point = Filter(PC_BoundaryPoint, Range("D" & i), False)
Next i
End Sub

1671588260449.png
 

File đính kèm

Chào cả nhà,
Hiện em đang tìm hiểu về mảng của VBA nhưng bị vướng ở chỗ này không biết sao nó cứ báo lỗi, nhờ cả nhà xem giúp ạ.
Em có 3 cột thế này, em đang muốn filter giá trị cột D theo cột A, giá trị nào giống thì lấy giá trị cột B bỏ vào 1 mảng, nhưng ko hiểu sao nó cứ bị lỗi ở chỗ filter, nhờ mọi người giúp với ạ. Với lại có cách nào mình lấy được index cột A, để tra lấy giá trị cột B ko ạ?
Em xin cảm ơn.

Sub Filter_1()

' find last row and last column
Set sht = ActiveSheet
lastrow1 = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row
lastrow2 = sht.Cells(sht.Rows.Count, "D").End(xlUp).Row
LastColumn = sht.Range("B1").CurrentRegion.Columns.Count

Dim PC_property As Variant
Dim PC_BoundaryPoint As Variant
Dim Point As Variant

PC_BoundaryPoint = Range(Cells(3, "A"), Cells(lastrow2, "A"))
For i = 3 To lastrow1
Point = Filter(PC_BoundaryPoint, Range("D" & i), False)
Next i
End Sub

View attachment 284880
Bạn giải thích hơi khó hiểu, có thể lấy ít kết quả minh hoạ được không?
 
Upvote 0
PC_BoundaryPoint = Range(Cells(3, "A"), Cells(lastrow2, "A"))

Còn chưa qua bước vỡ lòng (chưa khai báo biến, chưa biết cách lấy dữ liệu từ bảng tính) thì tìm hiểu mảng làm gì vội.

Filter(PC_BoundaryPoint, Range("D" & i), False)

Luôn luôn và luôn luôn ghi nhớ câu thần chú: Đọc kỹ hướng dẫn trước khi dùng.
 
Upvote 0
Bạn giải thích hơi khó hiểu, có thể lấy ít kết quả minh hoạ được không?
1671590652991.png
Sub Import_PC()
' Turn on instance Etabs
Dim AttachToInstance As Boolean
AttachToInstance = True
'create API helper object
Dim myHelper As ETABSv1.cHelper
Set myHelper = New ETABSv1.Helper
'dimension the ETABS Object as cOAPI type
Dim myETABSObject As ETABSv1.cOAPI
Set myETABSObject = Nothing
Dim ret As Long
Set myETABSObject = myHelper.GetObject("CSI.ETABS.API.ETABSObject")
'get a reference to cSapModel to access all API classes and functions
Dim mySapModel As ETABSv1.cSapModel
Set mySapModel = myETABSObject.SapModel
' find last row and last column
Set sht = ActiveSheet
lastrow1 = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row
lastrow2 = sht.Cells(sht.Rows.Count, "D").End(xlUp).Row
LastColumn = sht.Range("B1").CurrentRegion.Columns.Count
For i = 3 To lastrow1
NumberPoint = Application.WorksheetFunction.CountIf(Range(Cells(3, "D"), Cells(lastrow2, "D")), Cells(i, "A"))
Name = Cells(i, "A")

ret = mySapModel.AreaObj.AddByPoint(NumberPoint, Point, Name)
Next i

End Sub

Cái em cần là một mảng Point() để gắn vào cái hàm này. Theo như hình chụp thì giá trị numberPoint em lấy ở cột A, đếm ở cột D (ví dụ FD_0001 là được 4), Point ở đây là 1 array(nó sẽ có giá trị Bo_0001,Bo_0002,Bo_0003,Bo_0004), Name lấy theo cột A. Em còn vướng chỗ tìm giá trị Point này ạ
1671591005172.png
Bài đã được tự động gộp:

Còn chưa qua bước vỡ lòng (chưa khai báo biến, chưa biết cách lấy dữ liệu từ bảng tính) thì tìm hiểu mảng làm gì vội.



Luôn luôn và luôn luôn ghi nhớ câu thần chú: Đọc kỹ hướng dẫn trước khi dùng.
Em đọc qua mấy cái mảng mà có vài cái chưa rõ ạ. Ví dụ như em xem các ví dụ thì thấy cái filter này nó hoạt động cho mảng 1 chiểu, mà lúc gán 1 cột excel vô array thì nó tự chuyển thành bảng 2 chiều. Có phải đó là nguyên nhân ko ạ?
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Như bài #3 đã nói, biến còn chưa khai báo đủ thì làm gì tiếp được nhỉ.
Không quan trọng lắm. Point được Redim là (3), mặc định là LBound là 0. Cái này phải xem chừng Option Base...
Vấn đề của thớt là chưa học kỹ cấu trúc dữ liệu, không có căn bản về cấu trúc căn bản bâc nhất của lập trình: cấu trúc mảng.
Vì không có căn bản cấu trúc cho nên tất cả các cấu trúc kế đó đêìu lẫn lộn hết. DDiern hìn bài này dùng các đối tượng bậc hơi cao (các đôi tượng giao diện vời SAP) là code xỉu liền.
Nếu muốn giải bài này, thớt phải cho biết trong hướng dẫn của SAP, chữ ký (signature) của SAPModel.AreaObject,AddPoint ra sao. Diễn giải như bài #4 ở trên là chưa đủ.

(*1) quý vị có biết chuyên viên SAP là bậc nào không? ngày xưa, một lập trình viên SAP ăn lương gấp đôi lập trình viên Web Script. Vài năm sau, với AJAX, JavaScript mới nổi lên.
 
Upvote 0
Web KT

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

Back
Top Bottom