File của bạn đây:Giúp em với,. đang làm thầu mà link thủ công số thứ tự từ 2 sheet với nhau rất là lâu đối với hạng mục có nhiều công việc, đôi khi lại nhầm. Có bác nào giúp em với. Em xin chân thành cảm ơn <3!
Bạn xem file chưamình có thể xin luôn hàm vlook up ở bên cột dự thầu đc ko?
( mù exel bạn a
![]()
Công thức bên Sheet Dự thầu của bạn tìm kiếm theo STTFile của bạn đây:
1. Sheet chiết tính bạn thêm 1 cột phụ để ghi đơn giá
2. Sheet Dự thầu dùng hàm vlookup()
Dò tìm theo Stt hay mã hiệu đơn giá cũng giống nhau mà bạn! Ngay cả trong trường hợp một file dự thầu có nhiều sheet đơn giá chi tiết vẫn có thể truy tìm theo số thứ tự (mà trong trường hợp nhiều sheet đơn giá chi tiết, mỗi sheet sẽ được mã hóa số thứ tự, ví dụ: phần đường là Đ1, Đ2... phần cống là Co1, Co2..., phần cầu là Ca1, Ca2...) Tùy theo cách mà người làm đơn giá thầu có kinh nghiệm quản lý và sắp xếp dữ liệu thôi. Truy tìm theo cái gì thì mục đích cuối cùng cũng là "tìm được dữ liệu", tránh nhầm lẫn và trùng lặp.Công thức bên Sheet Dự thầu của bạn tìm kiếm theo STT
Mình thấy các file dự toán đều dò tìm dữ liệu ở cột Mã hiệu chứ nhỉ???
Mình dùng đoạn code này để truy tìm vùng tham chiếu của hàm vlookup()Mình muốn hỏi thêm chút nữa: Minh muôn link kiểu trong ô A5 (='Chiết tính'!A5) Khi mình ấn tổ hợp phim Ctrl+{ ở ô số thứ tự bên sheet Dự thầu thì nó sẽ nhảy về bên ô số thứ tự A5 của bên chiết tính; "Cái này để cho nta chấm thầu người ta dễ kiểm tra" Liệu có cách nào link số TT như thế ko?
Sub Find_lookup()
Dim i As Integer, j As Integer
Dim S(1 To 10) As Integer
Dim Rng As String, FVl As Variant
Dim Sh As String, Rng2 As String, Rng1 As String
Dim FRw As Integer, LRw As Integer, Clm As Integer
Dim IndCol As Integer, Sh1 As String
If Left(ActiveCell.Formula, 8) = "=VLOOKUP" Or Left(ActiveCell.Formula, 8) = "=HLOOKUP" Then
For i = 10 To Len(ActiveCell.Formula)
If Mid(ActiveCell.Formula, i, 1) = "," Then
j = j + 1
S(j) = i
End If
Next i
FVl = Range(Mid(ActiveCell.Formula, 10, S(1) - 10)).Value
Rng = Mid(ActiveCell.Formula, S(1) + 1, S(2) - S(1) - 1)
If InStr(1, Rng, "!", 0) > 0 Then
Sh = Left(Rng, InStr(1, Rng, "!", 0) - 1)
Rng2 = Replace(Right(Rng, Len(Rng) - InStr(1, Rng, "!", 0)), "$", "")
Else
Sh = ActiveSheet.Name
Rng2 = Replace(Rng, "$", "")
End If
If IsNumeric(Mid(ActiveCell.Formula, S(2) + 1, S(j) - S(2) - 1)) = True Then
IndCol = Mid(ActiveCell.Formula, S(2) + 1, S(j) - S(2) - 1)
Else
If InStr(1, IndCol, "!") = 0 Then
IndCol = Range(Mid(ActiveCell.Formula, S(2) + 1, S(j) - S(2) - 1)).Value
Else
Sh1 = Left(Mid(ActiveCell.Formula, S(2) + 1, S(j) - S(2) - 1), InStr(1, IndCol, "!") - 1)
Rng1 = Right(Mid(ActiveCell.Formula, S(2) + 1, S(j) - S(2) - 1), Len(Mid(ActiveCell.Formula, S(2) + 1, S(j) - S(2) - 1)) - InStr(1, IndCol, "!") - 1)
IndCol = Worksheets(Sh1).Range(Rng1).Value
End If
End If
FRw = Range(Left(Rng2, InStr(1, Rng2, ":") - 1)).Row
Clm = Range(Left(Rng2, InStr(1, Rng2, ":") - 1)).Column
LRw = Range(Right(Rng2, Len(Rng2) - InStr(1, Rng2, ":"))).Row
For i = FRw To LRw
If LCase(Worksheets(Sh).Cells(i, Clm).Value) = LCase(FVl) Then
Worksheets(Sh).Activate
Range(ToLetter(Clm) & i & ":" & ToLetter(Clm + IndCol - 1) & i).Select
If i > 6 Then
ActiveWindow.ScrollRow = i - 6
Else
ActiveWindow.ScrollRow = 1
End If
SpeedOff
Exit Sub
End If
Next i
End If
End Sub
Function ToLetter(a As Integer)
If (a - 1) \ 26 <> 0 Then ToLetter = Chr((a - 1) \ 26 + 64)
ToLetter = ToLetter + Chr((a - 1) Mod 26 + 65)
End Function
Có trường hợp bên Sheet Đơn giá chi tiết có nhiều số TT trùng lặp mà (chỉ khác nhau ở hạng mục)Dò tìm theo Stt hay mã hiệu đơn giá cũng giống nhau mà bạn! Ngay cả trong trường hợp một file dự thầu có nhiều sheet đơn giá chi tiết vẫn có thể truy tìm theo số thứ tự (mà trong trường hợp nhiều sheet đơn giá chi tiết, mỗi sheet sẽ được mã hóa số thứ tự, ví dụ: phần đường là Đ1, Đ2... phần cống là Co1, Co2..., phần cầu là Ca1, Ca2...) Tùy theo cách mà người làm đơn giá thầu có kinh nghiệm quản lý và sắp xếp dữ liệu thôi. Truy tìm theo cái gì thì mục đích cuối cùng cũng là "tìm được dữ liệu", tránh nhầm lẫn và trùng lặp.
Về nguyên tắc thì không thể có số thứ tự trùng lặp trong 1 sheets đơn giá chi tiết. Ngay cả trường hợp nhiều sheets đơn giá chi tiết, người lập giá còn áp dụng 1 cách nữa là đánh số thứ tự lũy kế (số cuối của sheets trước cộng với 1 để ra số đầu của sheets sau). Nói chung nó thuộc phạm trù "kỹ năng quản lý dữ liệu" đơn thuần thôi.Có trường hợp bên Sheet Đơn giá chi tiết có nhiều số TT trùng lặp mà (chỉ khác nhau ở hạng mục)
Mình thì cứ dùng dự toán có bản quyền cho đầy đủ chức năng, cập nhật, công cụ