Tìm mức lương theo từng giai đoạn bằng VBA

Liên hệ QC

thao nguyen01

Thành viên thường trực
Tham gia
8/12/19
Bài viết
241
Được thích
30
Kính gửi anh/chị trên diễn đàn,

Em muốn tìm mức lương theo từng giai đoạn và số tháng làm việc tương ứng với với mức lương tại thời điểm đó. Em muốn tìm kết quả cho E3:O5 ạ. Anh/chị xem giúp em với ạ. Em cảm ơn anh/chị nhiều ạ.
 

File đính kèm

  • DO TIM.xlsx
    11.9 KB · Đọc: 15
Số tháng tính chẵn hay có lẻ ngày?
 
Upvote 0
Em có thử cho vòng lặp For để lấy mức lương ra thử nhưng điều kiện của em hình như sai ạ.

Sub dotim02()
Dim I As Long, dcuoi As Long, dcuoi_DS As Long, ii As Long
Dim arr_N(), arr_DS(), arr_DS02()
Dim arr_D()

dcuoi = Sheet1.Range("B10000").End(xlUp).Row
arr_N = Sheet1.Range("B3:D" & dcuoi)
arr_DS = Sheet1.Range("R2:T6")
ReDim arr_D(1 To UBound(arr_N, 1), 1 To 10)

For I = 1 To UBound(arr_N, 1)
K = 0
For J = 1 To UBound(arr_DS, 1)
If arr_N(I, 2) < arr_DS(J, 2) Then
K = K + 1
arr_D(I, K) = arr_DS(J, 3)

End If
Next J
Next I
Sheet1.Range("E3:O1000").ClearContents
Sheet1.Range("E3").Resize(UBound(arr_N, 1), 10) = arr_D

End Sub
 

File đính kèm

  • DO TIM 2.xlsb
    17.6 KB · Đọc: 9
Upvote 0
Xem thử ở đây.

 
Upvote 0
Xem thử ở đây.


Dạ, em cảm ơn Thầy nhiều ạ.
 
Upvote 0
Bảng của bạn đã trải ra theo từng khoảng rồi thì dùng hàm Excel tốt hơn. Dùng VBA chỉ thêm rắc rối.
 
Upvote 0
Bảng của bạn đã trải ra theo từng khoảng rồi thì dùng hàm Excel tốt hơn. Dùng VBA chỉ thêm rắc rối.

Dạ, em cảm ơn Thầy ạ. Dạ, vì em viết VBA một phần là để giải quyết công việc, nhưng chủ yếu là để luyện tập viết code và suy nghĩ hướng đi ạ. Nhưng Thầy cho em hỏi 1 vấn đề là: em dùng UDF nếu dữ liệu nhiều file sẽ chậm hơn không ạ.
 
Upvote 0
Đây là cách công thức:

1587114648677.png
Công thức tính số tháng nằm trong khoảng thời gian.
=IFERROR(DATEDIF(MAX($C3,INDEX($R$2:$T$6,QUOTIENT(COLUMN()-3,2),1)),MIN($D3,INDEX($R$2:$T$6,QUOTIENT(COLUMN()-3,2),2)),"m"), 0)
Copy công thức ở E3 (copy nguyên xi, không kéo) và paste vào G3, I3, K3, M3
Fill xuống.
 
Upvote 0
Đây là cách công thức:

View attachment 235867
Công thức tính số tháng nằm trong khoảng thời gian.
=IFERROR(DATEDIF(MAX($C3,INDEX($R$2:$T$6,QUOTIENT(COLUMN()-3,2),1)),MIN($D3,INDEX($R$2:$T$6,QUOTIENT(COLUMN()-3,2),2)),"m"), 0)
Copy công thức ở E3 (copy nguyên xi, không kéo) và paste vào G3, I3, K3, M3
Fill xuống.

Dạ. Em cảm ơn Thầy nhiều ạ.
 
Upvote 0
Web KT

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

Back
Top Bottom