Hàm Nội Suy 1 Chiều Và 2 Chiều | Giải Pháp Excel

Giải Pháp Excel
  • Trang chủ Có gì mới Hoạt động gần nhất Tác giả
  • Diễn đàn Tìm bài viết mới Tìm theo chuyên mục
  • Video New Video về Excel Video về tin học khác Tin tức về tin học chung
  • Thông tin mới Featured content Tìm bài mới Tài Nguyên Mới Hoạt động gần nhất
  • Tài nguyên Đánh giá mới nhất Tìm tài nguyên
  • Facebook
  • Đóng góp
Đăng nhập Đăng Ký Có gì mới? Tìm kiếm

Tìm kiếm

Mọi nơi Đề tài Diễn đàn này Đề tài này Chỉ tìm trong tiêu đề Note Bởi: Tìm kiếm Tìm nâng cao…
  • Tìm bài viết mới
  • Tìm theo chuyên mục
Menu Đăng nhập Đăng Ký Install the app Install How to install the app on iOS

Follow along with the video below to see how to install our site as a web app on your home screen.

Note: This feature may not be available in some browsers.

  • Khách ơi! GPE thông tin đến bạn ấn phẩm "lập trình VBA trong Excel": - Phần cơ bản - Phần Nâng Cao - VBA trong Excel - Cải thiện và tăng tốc
  • Trang chủ
  • Diễn đàn
  • Excel và Kỹ Thuật
You are using an out of date browser. It may not display this or other websites correctly.You should upgrade or use an alternative browser. Hàm nội suy 1 chiều và 2 chiều (1 người xem)
  • Thread starter Thread starter connhangheo
  • Ngày gửi Ngày gửi 16/11/07
Liên hệ QC

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

Đang trực tuyến: 2 (Thành viên: 0, Khách: 2) connhangheo

connhangheo

Thành viên thường trực
Tham gia 18/5/07 Bài viết 214 Được thích 225 Nghề nghiệp Sinh Viên em mới học VBA, mọi người xem file em viết 2 hàm này rồi cho em ý kiến để em hoàn thiện hơn, Thanks

File đính kèm

  • noisuy.xls noisuy.xls 28.5 KB · Đọc: 6,494
keeponlylove

keeponlylove

Thành viên mới
Tham gia 23/4/07 Bài viết 42 Được thích 8 Em không hiểu cách dùng hàm ntn?trong hàm noiuy1(D6:E13,3.5,3) cái 3.5 và 3 có nghĩa là gì?bác có thể giải thích ko?thank. connhangheo

connhangheo

Thành viên thường trực
Tham gia 18/5/07 Bài viết 214 Được thích 225 Nghề nghiệp Sinh Viên em xin giải thích hàm của em như sau, mọi người cho ý kiến về code giúp em

File đính kèm

  • noisuy.xls noisuy.xls 31 KB · Đọc: 3,163
T

tvduc

Thành viên mới
Tham gia 12/9/07 Bài viết 5 Được thích 1 Cảm ơn mọi người nhiều!minh không biết về VBA nhưng moi ngừoi có thể hướng dẫn cách lập biểu thứ nọi suy đo hay khong, và một bảng tính nào đó tôi muốn sử dụng nó thì làm thế nào, chẵng nhẽ mơ file nay lên rồi sửa trên đó hay sao? cam on rất nhiều. connhangheo

connhangheo

Thành viên thường trực
Tham gia 18/5/07 Bài viết 214 Được thích 225 Nghề nghiệp Sinh Viên cái này bạn phải biết 1 ít về VBA Nếu bây h bạn có 1 bảng giá trị và cần tìm giá trị nội suy trong bảng đó thì bạn sẽ làm thực hiện như sau : bạn phải biết công thức nó như thế nào đúng không : - Với hàm nội suy 1 chiều thì công thức như sau : =noisuy1(bảng giá trị, giá trị cần nội suy, thứ tự của cột cần lấy giá trị nội suy) Tham số thứ 3 (thứ tự của cột cần lấy giá trị nội suy) cần dùng trong trường hợp bảng giá trị nội suy của bạn có nhiều cột. Ví dụ khi bạn khi bạn nội suy sức chịu tải tiêu chuẩn của đất dính (trong sách Cơ Học Đất) thì giá trị cần nội suy của bạn sẽ là hệ số rỗng e, nhưng vì có nhiều giá trị độ sệt IL khác nhau (mỗi giá trị là 1 cột) nên bạn cần phải biết thứ tự của cột là bạn cần lấy giá trị nội suy. -Với hàm nội suy 2 chiều thì công thức là thế này: =noisuy2(bảng giá trị,giá trị cần nộ suy thứ nhất, giá trị cần nội suy thứ 2) hàm của mình nó chưa hoàn chỉnh, trong thời gian này mình đang phải làm nhiều bài tập TKMH và chuẩn bị ôn thi nên khá bận, khi nào có thời gian nhiều hơn mình sẽ học hỏi để hoàn thiện nó tốt hơn. Ví dụ như phần bắt lỗi mình cũng chưa làm,và còn 1 số cái khác nữa. Nhưng nếu dùng tạm thì cũng vẫn ổn. Mong mọi người góp ý và cũng hoàn thiện hàm này cho anh em trong forum học hỏi. Thanks Chỉnh sửa lần cuối bởi điều hành viên: 12/1/13 P

phhxd

Thành viên mới
Tham gia 29/12/07 Bài viết 1 Được thích 0 Nghề nghiệp Kỹ sư xây dựng Mình đã dùng phần code của bạn, rất cám ơn :D Làm bài tập lớn cơ đất nhàn đi rất nhều! Tuy nhiên trong quá trình làm mình thấy là khi giá trị của hàng ngang và dọc, chẳng may bằng và ứng với các giá trị của cột ngang đầu tiên và dọc đầu tiên là hàm sẽ làm việc ko ổn. Ví dụ cột dọc là 0.15 0.30 0.60; cột ngang là 0 0.25 0.5 Giá trị cần tra ở hàng ngang ứng với giá trị 0 là có vấn đề :) Mình chưa có 1 tí kiến thức nào về VBA nên lần này may mắn tìm được bài viết của bạn, có điều thắc mắc như trên... Thank bạn :) Z

zigzag

Thành viên mới
Tham gia 10/4/07 Bài viết 1 Được thích 0 NSTT: Function NSTT(xnew, xx, yy) For i = 1 To xx.Count If xx(i) > xnew Then Exit For End If Next i NSTT = (xnew - xx(i - 1)) / (xx(i) - xx(i - 1)) * (yy(i) - yy(i - 1)) + yy(i - 1) End Function đây là hàm nội suy tuyến tính 1 chiều! có bác nào viết cho tôi hàm tìm nghiệm của 1 pt được không! Thanks! Lần chỉnh sửa cuối: 26/2/08 D

duongthanh85

Thành viên mới
Tham gia 14/12/06 Bài viết 8 Được thích 2 Dùng hàm nội suy 2 chiều để tìm phương trình một mặt được không nhỉ? Cụ thể là từ 1 dãy số liệu z(i)=F(x(i), y(i) Để tìm ra dạng hàm của z=f(x,y) Mong bạn có thể giúp mình, nếu có thể thì cả phần lý thuyết là tốt nhất. Thanks! PhanTuHuong

PhanTuHuong

VBA & VB.NET for Excel & AutoCad
Thành viên danh dự Tham gia 13/6/06 Bài viết 7,238 Được thích 24,781 Hàm bạn connhangheo viết ổn đấy, cái khó nhất là tra vùng biên. Cứ thế phát huy --=0 ! Khai báo biến đầy đủ và chính xác (tôi thì hay nhầm và quên !$@!! ). SA_DQ

SA_DQ

/(hông là gì!
Thành viên danh dự Tham gia 8/6/06 Bài viết 14,776 Được thích 23,229 Nghề nghiệp U80 Với nội suy 1 chiều, trước. PHP: Sao chép. Function noisuy1(vungtra As Range, X As Double, cot As Integer) As Double 'ham noi suy 1 chieu Dim ktra As Boolean Dim i As Integer Dim x1 As Double, x2 As Double, y1 As Double, y2 As Double For i = 1 To vungtra.Cells.Count kiemtra = False If vungtra.Cells(i, 1) <= X And vungtra.Cells(i + 1, 1) >= X Then x1 = vungtra.Cells(i, 1): x2 = vungtra.Cells(i + 1, 1) y1 = vungtra.Cells(i, cot): y2 = vungtra.Cells(i + 1, cot) noisuy1 = (y2 - y1) * (X - x1) / (x2 - x1) + y1 ktra = True End If Next i If ktra = False Then MsgBox "gia tri can tim ko nam trong bang tra", vbInformation Exit Function End If End Function Bạn còn phí phạm tài nguyên & thời giờ: Khi tìm ra hàm rồi, nên thoát ngay vòng lặp/thoát ngay hàm, cũng OK! Cái này mình chỉ mới suy đón thôi, cũng mạnh dạn nêu ra đây: Nếu giá trị các cột là tăng (Giảm dần) & trong cột cũng tăng dần có nghĩa là 1 8 2 14 7 15 thì bạn nên duyệt hàng đầu trước đề tìm trị trong ô nào > X; Sau khi tìm ra, ta quay lại cột trước đó & tìm trong cột đó thôi. Lần chỉnh sửa cuối: 5/3/08 SA_DQ

SA_DQ

/(hông là gì!
Thành viên danh dự Tham gia 8/6/06 Bài viết 14,776 Được thích 23,229 Nghề nghiệp U80 Xin giới thiệu 1 cách khác để lập hàm nội suy 2 chiều * Nhược điểm lớn nhất của hàm nội suy 2 chiều ( tại #1) là vòng lặp thứ hai lại phải duyệt toàn bộ các cells trong vùng chọn. Nhưng thực chất ta chỉ cần: - Ở vòng lặp đầu tạm chấp nhận vì duyệt chỉ trong hàng đầu - Vòng sau chỉ cần duyệt cột đầu của vùng dữ liệu; Vì ta đã khai báo 2 biến dạng Range (Rng & Clls), nên lưu trong nó (kèm theo 1 cách đương nhiên) các trị số cột & hàng của chúng. PHP: Sao chép. Option Explicit Function NoiSuyGPE(VungTra As Range, xX As Double, yY As Double) As Double 'Ham Noi Suy 2 Chieu Tai GPE.COM (Sa_DQ)' Dim iW As Integer, jI As Integer Dim x1 As Double, x2 As Double, y1 As Double, y2 As Double Dim a11 As Double, a12 As Double, a21 As Double, a22 As Double Dim t1 As Double, t2 As Double Dim RgNg As Range, RgDoc As Range Dim Rng As Range, Clls As Range Set RgNg = VungTra.Cells(1, 1).Resize(1, VungTra.Columns.Count - 1) Set RgDoc = VungTra.Cells(1, 1).Resize(VungTra.Rows.Count, 1) 1 For Each Rng In RgNg 2 If Rng <= yY And Rng.Offset(, 1) >= yY Then 3 y1 = Rng: y2 = Rng.Offset(, 1) For Each Clls In RgDoc 5 If Clls <= xX And Clls.Offset(1) >= xX Then x1 = Clls: x2 = Clls.Offset(1) '3*' 7 a11 = Cells(Clls.Row, Rng.Column): a12 = Cells(Clls.Row, Rng.Column + 1) a21 = Cells(Clls.Row + 1, Rng.Column): a22 = Cells(Clls.Row + 1, Rng.Column + 1) 9 t1 = (a12 - a11) * (yY - y1) / (y2 - y1) + a11 t2 = (a22 - a21) * (yY - y1) / (y2 - y1) + a21 11 NoiSuyGPE = (t2 - t1) * (xX - x1) / (x2 - x1) + t1 Exit For 13 End If Next Clls 15 End If Next Rng 17 If NoiSuyGPE = 0 Then '!' msgbox "gia tri can tim ko nam trong bang tra", vbInformation 19 End If End Function H

hung1981

Thành viên mới
Tham gia 20/12/06 Bài viết 15 Được thích 3
connhangheo đã viết: hàm của mình nó chưa hoàn chỉnh, trong thời gian này mình đang phải làm nhiều bài tập TKMH và chuẩn bị ôn thi nên khá bận, khi nào có thời gian nhiều hơn mình sẽ học hỏi để hoàn thiện nó tốt hơn. Ví dụ như phần bắt lỗi mình cũng chưa làm,và còn 1 số cái khác nữa. Nhưng nếu dùng tạm thì cũng vẫn ổn. Mong mọi người góp ý và cũng hoàn thiện hàm này cho anh em trong forum học hỏi. Thanks Nhấp chuột vào đây để mở rộng...
Mình đã thử hàm của bạn rồi Nó có một nhược điểm là tra 1 chiều cùng tăng hay thì được nhưng khi x tăng mà y giảm thì chịu thua Mình đã nghiên cứu sửa lại chỗ For i = 1 To vungtra.cells.count thành For i = 1 To vungtra.Rows.Count thì chạy ok Không biết góp ý của mình có đúng hay không Chúng ta cùng thảo luận nhé H

hung1981

Thành viên mới
Tham gia 20/12/06 Bài viết 15 Được thích 3
connhangheo đã viết: em xin giải thích hàm của em như sau, mọi người cho ý kiến về code giúp em Nhấp chuột vào đây để mở rộng...
Hàm noisuy2 bạn mắc lỗi giống hàm nội suy 1 chỗ chọn giá trị vòng lặp Mình edit lại thấy chạy tốt hơn Bạn thử xem SA_DQ

SA_DQ

/(hông là gì!
Thành viên danh dự Tham gia 8/6/06 Bài viết 14,776 Được thích 23,229 Nghề nghiệp U80 Tự cải tiến tiếp tục: Quan sát dòng lệnh 9 & 10 mình thấy còn có thể rút gọn thêm (về cách viết) để đỡ rườm rà. Đó là tính trước 2 biểu thức, như sau Tính trước cho y2: tại phần sau của dòng lệnh 3 sẽ là y2 = Rng.Offset(, 1) - y1 Tương tự như vậy, tại phần sau của dòng lệnh 7 sẽ là: a12 = Cells(Clls.Row, Rng.Column + 1) - a11 & tại phần sau của dòng lệnh 8 là: a22 = Cells(Clls.Row + 1, Rng.Column + 1) - a12 Sau đó trông vô 2 biểu thức tại dòng lệnh 9 & 10 dẻ thiện cảm hơn! , như sau: PHP: Sao chép. t1 = (a12 ) * (yY - y1) / (y2 ) + a11 t2 = (a22 ) * (yY - y1) / (y2 ) + a21 Vấn đề nữa là: Dòng lệnh 17 còn phải viết lại cho chuẩn hơn!. . . . Sau cùng: Mình còn dư 2 biến khai báo chưa dùng (Do lịch sử để lại!) Mã: Sao chép. Option Explicit [B]Function NoiSuyGPE(VungTra As Range, xX As Double, yY As Double) As Double[/B] [COLOR="Blue"] 'Ham Noi Suy 2 Chieu Tai GPE.COM (Sa_DQ)'[/COLOR] [COLOR="Silver"]Dim iW As Integer, jI As Integer[/COLOR] Dim x1 As Double, x2 As Double, y1 As Double, y2 As Double Dim a11 As Double, a12 As Double, a21 As Double, a22 As Double Dim t1 As Double, t2 As Double Dim RgNg As Range, RgDoc As Range Dim Rng As Range, Clls As Range Set RgNg = VungTra.Cells(1, 1).Resize(1, VungTra.Columns.Count - 1) Set RgDoc = VungTra.Cells(1, 1).Resize(VungTra.Rows.Count, 1) 1 For Each Rng In RgNg 2 If Rng <= yY And Rng.Offset(, 1) >= yY Then 3 y1 = Rng: [COLOR="Silver"] y2 = Rng.Offset(, 1)[/COLOR] For Each Clls In RgDoc 5 If Clls <= xX And Clls.Offset(1) >= xX Then x1 = Clls: x2 = Clls.Offset(1) '3*' 7 a11 = Cells(Clls.Row, Rng.Column): [COLOR="silver"]a12 = Cells(Clls.Row, Rng.Column + 1)[/COLOR] a21 = Cells(Clls.Row + 1, Rng.Column): [COLOR="silver"]a22 = Cells(Clls.Row + 1, Rng.Column + 1)[/COLOR] 9 [COLOR="silver"] t1 = (a12 - a11) * (yY - y1) / (y2 - y1) + a11 t2 = (a22 - a21) * (yY - y1) / (y2 - y1) + a21[/COLOR] 11 NoiSuyGPE = (t2 - t1) * (xX - x1) / (x2 - x1) + t1 Exit For 13 End If Next Clls 15 End If Next Rng 17 If NoiSuyGPE = 0 Then '!' msgbox "gia tri can tim ko nam trong bang tra", vbInformation 19 End If End Function Lần chỉnh sửa cuối: 8/3/08 V

vietlge

Thành viên mới
Tham gia 22/10/08 Bài viết 11 Được thích 0 Chào bác Connhangheo! em down cái file excel tính hàm nội suy 1 chiều và 2 chiều về tính toán! kết quả tốt lắm nhưng mà bác ơi! Không hiểu sao khi vùng tra nằm tại một số ô trên Work sheet thì không thực hiện được 2 hàm trên. Khi mình cop vùng tra ra chỗ khác vẫn trên work sheet đó thì lại làm được. Kể cả khi vùng tra ok rồi thực hiện phép tính ok rồi nhưng nếu mình xóa một ô or một cột nào đó mà ko ảnh hưởng đến vùng tra đó thì hàm tính tự nhiên lại ko tính được nữa. mình không hiểu thế là thế nào? bạn có thể giải thích cho mình và hướng dẫn mình cách giải quyết ko? mình nghĩ do macro bị virus bởi vì khi bật file excel lên thì thấy có dòng chữ: Macros may contain viruses!.... Mình phải làm sao đây? giúp mình nhé! thanks and best regards! chào bác connhangheo! em insert hai cái code của bác vào dùng thử thấy tốt! nhưng mà có một vấn đề là trên work sheet ý, khi vùng tra ở một ô nào đó thì không thực hiện được hai hàm đó bác ạ còn khi em cop vùng tra ra chỗ khác vẫn trên sheet đó thì lại thực hiện được nó như thế nên rất khó để trình bày như thế có phải là do macros của bác bị virus ko? hay là bị vấn đề gì? mong bác giải quyết hộ vấn đề này! cảm ơn bác nhiều! Chỉnh sửa lần cuối bởi điều hành viên: 12/1/13 D

Dinhbeo

Thành viên mới
Tham gia 22/10/08 Bài viết 2 Được thích 0 Đúng vậy mình cũng gặp lỗi y như trên-+*/ D

dangvutuan

Thành viên mới
Tham gia 10/10/06 Bài viết 7 Được thích 9 Mình là dân kỹ thật nên sử dụng nội suy từ rất lâu (từ năm 1998) nên cũng đã viết ra hàm nội suy để dùng riêng. Cũng phải qua thực tế sử dụng rất nhiều lần mới viết được một hàm ưng ý (vì trong lĩnh vực kỹ thuật rất cần sự chính xác và tin cậy), tiện đây xin giới thiệu để các bạn tham khảo: ' One Directions Interpolate Function ' Author : Dang Vu Tuan ' Function NS(table_array, Lookup_value) Dim NumRows As Integer, i As Integer Dim Max, Min Dim Range1 As Range, Range2 As Range NumRows = table_array.Rows.Count Set Range1 = table_array.Columns(1) Set Range2 = table_array.Columns(2) ' check for case if val = last value in range1 If Lookup_value = Range1.Cells(NumRows) Then NS = Range2.Cells(NumRows) Exit Function End If ' Get Max and Min Max = Range1.Cells(1) Min = Range1.Cells(1) For i = 1 To NumRows If Max <= Range1.Cells(i) Then Max = Range1.Cells(i) If Min >= Range1.Cells(i) Then Min = Range1.Cells(i) Next i ' Return an error if lookup_value is not within range1 If Lookup_value > Max Or Lookup_value < Min Then NS = "Out of range" 'Evaluate("NA()") Exit Function End If ' Do linear interpolation For i = 1 To NumRows - 1 If (Lookup_value >= Range1.Cells(i) And Lookup_value <= Range1.Cells(i + 1)) Or (Lookup_value <= Range1.Cells(i) And Lookup_value >= Range1.Cells(i + 1)) Then If (Range1.Cells(i) - Range1.Cells(i + 1)) <> 0 Then NS = (Range2.Cells(i + 1) + (Range2.Cells(i) - Range2.Cells(i + 1)) * (Lookup_value - Range1.Cells(i + 1)) / (Range1.Cells(i) - Range1.Cells(i + 1))) Else NS = Range2.Cells(i) End If Exit Function End If Next i End Function Và đây là hàm nội suy hai chiều: ' Two Directions Interpolate Function ' Author : Dang Vu Tuan ' Function NS2(Data_Range As Range, x, y) Dim A(), xMax, yMax, xMin, yMin Dim Nx, Ny, i, J, k1, k2, k3, k4, k12, k34 'Get the data Nx = Data_Range.Columns.Count Ny = Data_Range.Rows.Count ReDim A(Nx, Ny) For i = 1 To Nx For J = 1 To Ny A(i, J) = Data_Range(J, i) Next J Next i 'Check data xMax = A(2, 1) xMin = A(2, 1) For i = 2 To Nx If xMax < A(i, 1) Then xMax = A(i, 1) If xMin > A(i, 1) Then xMin = A(i, 1) Next i yMax = A(1, 2) yMin = A(1, 2) For J = 2 To Ny If yMax < A(1, J) Then yMax = A(1, J) If yMin > A(1, J) Then yMin = A(1, J) Next J If x < xMin Or x > xMax Or y < yMin Or y > yMax Then NS2 = "Out of range" Exit Function End If 'Do linear interpolation For i = 2 To Nx - 1 If (A(i, 1) <= x And x <= A(i + 1, 1)) Or (A(i, 1) >= x And x >= A(i + 1, 1)) Then For J = 2 To Ny - 1 If (A(1, J) <= y And y <= A(1, J + 1)) Or (A(1, J) >= y And y >= A(1, J + 1)) Then k1 = A(i, J) k2 = A(i + 1, J) k3 = A(i, J + 1) k4 = A(i + 1, J + 1) If (A(i + 1, 1) - A(i, 1)) = 0 Then k12 = k1 k34 = k3 Else k12 = k1 + (k2 - k1) * (x - A(i, 1)) / (A(i + 1, 1) - A(i, 1)) k34 = k3 + (k4 - k3) * (x - A(i, 1)) / (A(i + 1, 1) - A(i, 1)) End If If (A(1, J + 1) - A(1, J)) = 0 Then NS2 = k12 Else NS2 = k12 + (k34 - k12) * (y - A(1, J)) / (A(1, J + 1) - A(1, J)) End If Exit Function End If Next J End If Next i End Function Hai hàm trên mình viết để dễ theo dõi nên thực sự còn có thể compact được hơn nữa. D

duong0h5

Thành viên mới
Tham gia 10/4/09 Bài viết 5 Được thích 1 Mình đang cần cái này rất gấp mình đã tải file về nhưng kô biết cách nào để đưa hàm nội suy vào bảng tính của mình được còn bảng tính của bạn thì ok để tiện cho việc tra, mình co thể để nó ở từng SHEET của excel được kô N

newcomer007

Thành viên mới
Tham gia 8/3/09 Bài viết 4 Được thích 1 mình đã down file của ban về nhưng không dùng được, no bị lỗi #Name, chac do minh thieu cài chi đó đúng không?bạn nào help mình với, thanks alot ptlong04x1

ptlong04x1

Thành viên tích cực
Tham gia 15/10/08 Bài viết 1,031 Được thích 1,531 Nghề nghiệp Kỹ sư xây dựng
newcomer007 đã viết: mình đã down file của ban về nhưng không dùng được, no bị lỗi #Name, chac do minh thieu cài chi đó đúng không?bạn nào help mình với, thanks alot Nhấp chuột vào đây để mở rộng...
Bạn vào Tools\Macro\Security --> chọn Medium, sau này nếu mở file ra Excel có hỏi gì đó thì bạn phải chọn Enable Macro. H

hayho

Thành viên mới
Tham gia 21/3/09 Bài viết 1 Được thích 2
dangvutuan đã viết: Mình là dân kỹ thật nên sử dụng nội suy từ rất lâu (từ năm 1998) nên cũng đã viết ra hàm nội suy để dùng riêng. Cũng phải qua thực tế sử dụng rất nhiều lần mới viết được một hàm ưng ý (vì trong lĩnh vực kỹ thuật rất cần sự chính xác và tin cậy), tiện đây xin giới thiệu để các bạn tham khảo: ' One Directions Interpolate Function ' Author : Dang Vu Tuan ' Function NS(table_array, Lookup_value) Dim NumRows As Integer, i As Integer Dim Max, Min Dim Range1 As Range, Range2 As Range NumRows = table_array.Rows.Count Set Range1 = table_array.Columns(1) Set Range2 = table_array.Columns(2) ' check for case if val = last value in range1 If Lookup_value = Range1.Cells(NumRows) Then NS = Range2.Cells(NumRows) Exit Function End If ' Get Max and Min Max = Range1.Cells(1) Min = Range1.Cells(1) For i = 1 To NumRows If Max <= Range1.Cells(i) Then Max = Range1.Cells(i) If Min >= Range1.Cells(i) Then Min = Range1.Cells(i) Next i ' Return an error if lookup_value is not within range1 If Lookup_value > Max Or Lookup_value < Min Then NS = "Out of range" 'Evaluate("NA()") Exit Function End If ' Do linear interpolation For i = 1 To NumRows - 1 If (Lookup_value >= Range1.Cells(i) And Lookup_value <= Range1.Cells(i + 1)) Or (Lookup_value <= Range1.Cells(i) And Lookup_value >= Range1.Cells(i + 1)) Then If (Range1.Cells(i) - Range1.Cells(i + 1)) <> 0 Then NS = (Range2.Cells(i + 1) + (Range2.Cells(i) - Range2.Cells(i + 1)) * (Lookup_value - Range1.Cells(i + 1)) / (Range1.Cells(i) - Range1.Cells(i + 1))) Else NS = Range2.Cells(i) End If Exit Function End If Next i End Function Và đây là hàm nội suy hai chiều: ' Two Directions Interpolate Function ' Author : Dang Vu Tuan ' Function NS2(Data_Range As Range, x, y) Dim A(), xMax, yMax, xMin, yMin Dim Nx, Ny, i, J, k1, k2, k3, k4, k12, k34 'Get the data Nx = Data_Range.Columns.Count Ny = Data_Range.Rows.Count ReDim A(Nx, Ny) For i = 1 To Nx For J = 1 To Ny A(i, J) = Data_Range(J, i) Next J Next i 'Check data xMax = A(2, 1) xMin = A(2, 1) For i = 2 To Nx If xMax < A(i, 1) Then xMax = A(i, 1) If xMin > A(i, 1) Then xMin = A(i, 1) Next i yMax = A(1, 2) yMin = A(1, 2) For J = 2 To Ny If yMax < A(1, J) Then yMax = A(1, J) If yMin > A(1, J) Then yMin = A(1, J) Next J If x < xMin Or x > xMax Or y < yMin Or y > yMax Then NS2 = "Out of range" Exit Function End If 'Do linear interpolation For i = 2 To Nx - 1 If (A(i, 1) <= x And x <= A(i + 1, 1)) Or (A(i, 1) >= x And x >= A(i + 1, 1)) Then For J = 2 To Ny - 1 If (A(1, J) <= y And y <= A(1, J + 1)) Or (A(1, J) >= y And y >= A(1, J + 1)) Then k1 = A(i, J) k2 = A(i + 1, J) k3 = A(i, J + 1) k4 = A(i + 1, J + 1) If (A(i + 1, 1) - A(i, 1)) = 0 Then k12 = k1 k34 = k3 Else k12 = k1 + (k2 - k1) * (x - A(i, 1)) / (A(i + 1, 1) - A(i, 1)) k34 = k3 + (k4 - k3) * (x - A(i, 1)) / (A(i + 1, 1) - A(i, 1)) End If If (A(1, J + 1) - A(1, J)) = 0 Then NS2 = k12 Else NS2 = k12 + (k34 - k12) * (y - A(1, J)) / (A(1, J + 1) - A(1, J)) End If Exit Function End If Next J End If Next i End Function Hai hàm trên mình viết để dễ theo dõi nên thực sự còn có thể compact được hơn nữa. Nhấp chuột vào đây để mở rộng...
E chỉ biết đọc thôi, hông bít viết, e thấy dễ hiểu với ai cần bắt chước làm, but hơi bị dài, đặc biệt là ở ns1c E thấy có ng viết cái code này nè, ngắn gọn đơn giản lắm Function NSTT(xnew, xx, yy) For i = 1 To xx.Count If xx(i) > xnew Then Exit For End If Next i NSTT = (xnew - xx(i - 1)) / (xx(i) - xx(i - 1)) * (yy(i) - yy(i - 1)) + yy(i - 1) End Function Vì ns1c chỉ cần cho i chạy tới khi giá trị x(i)>xnew (là giá trị tra), là ta đã có thể nội suy đc rồi Đấy là ý kiến của e, có gì sai sót pác thông cảm D

dangvutuan

Thành viên mới
Tham gia 10/10/06 Bài viết 7 Được thích 9
hayho đã viết: E chỉ biết đọc thôi, hông bít viết, e thấy dễ hiểu với ai cần bắt chước làm, but hơi bị dài, đặc biệt là ở ns1c E thấy có ng viết cái code này nè, ngắn gọn đơn giản lắm Function NSTT(xnew, xx, yy) For i = 1 To xx.Count If xx(i) > xnew Then Exit For End If Next i NSTT = (xnew - xx(i - 1)) / (xx(i) - xx(i - 1)) * (yy(i) - yy(i - 1)) + yy(i - 1) End Function Vì ns1c chỉ cần cho i chạy tới khi giá trị x(i)>xnew (là giá trị tra), là ta đã có thể nội suy đc rồi Đấy là ý kiến của e, có gì sai sót pác thông cảm Nhấp chuột vào đây để mở rộng...
Đúng là bản chất của hàm này chỉ cần như vậy, tuy nhiên là cần phải bẫy lỗi xảy ra trong quá trình sử dụng nên mới phải dài dòng như thế, VD điều gì sẽ xẩy ra khi sử dụng mã trên mà xx(i)=xx(i+1) hoặc yy(i)=yy(i+1)? H

hieugalang102

Thành viên mới
Tham gia 20/5/10 Bài viết 1 Được thích 0 con nhà nghèo viết như vậy thì làm sao mà biết cột nào vào cột nào mà nhập số liệu để nội suy ra chứ.hic.nhung dù sao cũng cảm ơn rất nhiều N

nvm2004

Thành viên mới
Tham gia 30/11/10 Bài viết 1 Được thích 0 minh tai ve mà không sử dụng được. Mình sửa số khác vào là báo lỗi. Bạn có thể giải thích tại sao không? H

heoxam4215

Thành viên mới
Tham gia 2/3/11 Bài viết 6 Được thích 9
connhangheo đã viết: em mới học VBA, mọi người xem file em viết 2 hàm này rồi cho em ý kiến để em hoàn thiện hơn, Thanks Nhấp chuột vào đây để mở rộng...
đồng chí ơi sao ko gọp hai cái vào một đi cho rồi sao phải chia ra hai cái làm gì với lại khi mà tôi khi tôi đánh noisuy2($C$3:$F$10,6,0) thì có loi value bạn thủ làm theo goi y cua tui coi. đã là nội suy thì làm một phát ra luôn chứ cần gì một chiều 2 chiều H

haiminhstraco

Thành viên mới
Tham gia 22/3/11 Bài viết 1 Được thích 0 phai nội suy của anh connhangheo hay lắm nhưng sao bảng nội suy của em trên 30 dòng thì không nội suy dược? có cách nào khắc phục không? Lần chỉnh sửa cuối: 24/3/11 G

garudb

Thành viên mới
Tham gia 23/3/10 Bài viết 3 Được thích 0 ''=noisuyc(IF(C18<3;3;IF(C18>400;400;C18));'1-P. Luc'!$A$160:$D$178;IF($D$9="A";2; IF($D$9="B";3;4)))'' ai biết hàm này là như thế nào ko. mình có file tính có hàm này mà ko biết ý nghĩa sao cả. ai biết có thể trả lời cho mình qua địa chỉ mail [email protected] . Mình cảm ơn rất nhiều!!!! huuthang_bd

huuthang_bd

Chuyên gia GPE
Tham gia 10/9/08 Bài viết 8,941 Được thích 11,366 Donate (Momo) Donate Giới tính Nam Nghề nghiệp Thợ đụng
garudb đã viết: ''=noisuyc(IF(C18<3;3;IF(C18>400;400;C18));'1-P. Luc'!$A$160:$D$178;IF($D$9="A";2; IF($D$9="B";3;4)))'' ai biết hàm này là như thế nào ko. mình có file tính có hàm này mà ko biết ý nghĩa sao cả. ai biết có thể trả lời cho mình qua địa chỉ mail [email protected] . Mình cảm ơn rất nhiều!!!! Nhấp chuột vào đây để mở rộng...
Hàm noisuyc trong công thức của bạn là hàm tự tạo. Bạn gửi file lên thử xem. Có thể dịch ngược từ hàm ra cách tính. T

tuanpvan

Thành viên mới
Tham gia 6/8/10 Bài viết 1 Được thích 0 các bác nào biết file có tên là noisuyy không? help em với P

Phuongdong 2005

Thành viên mới
Tham gia 18/3/09 Bài viết 7 Được thích 0 19-11-2011 11-28-48 SA.png Mình copy đoạn mã code cua ban " CONNHANGHEO" vào file excel 2003 => nhập hàm thì máy báo như vậy, Nhờ bạn giúp, Mình cần gấp Lần chỉnh sửa cuối: 19/11/11 M

MicrosoftExcel

Thành viên chính thức
Tham gia 21/8/08 Bài viết 98 Được thích 30 Vấn đề hàm nội suy này trong diễn đàn có nhiều rồi, các bạn tìm kiếm trên google sẽ thấy rất nhiều đơn cử một số hàm như sau: PHP: Sao chép. Function TraBang2Chieu(ByVal Hang, ByVal Cot, VungChon As Range) 'PMXD' Dim i As Long, j As Long Dim TangAnPha Dim NoiSuy1 As Double, NoiSuy2 As Double For i = 1 To UBound(VungChon.Value, 2) ' Theo phuong ngang If Hang = VungChon(1, i) Then For j = 1 To UBound(VungChon.Value, 1) - 1 If (Cot - VungChon(j, 1)) * (Cot - VungChon(j + 1, 1)) <= 0 Then TangAnPha = (VungChon(j + 1, i) - VungChon(j, i)) / (VungChon(j + 1, 1) - VungChon(j, 1)) TraBang2Chieu = VungChon(j, i) + (Cot - VungChon(j, 1)) * TangAnPha GoTo Thoat: End If Next j ElseIf (Hang - VungChon(1, i)) * (Hang - VungChon(1, i + 1)) < 0 Then For j = 1 To UBound(VungChon.Value, 1) - 1 If (Cot - VungChon(j, 1)) * (Cot - VungChon(j + 1, 1)) < 0 Then TangAnPha = (VungChon(j, i + 1) - VungChon(j, i)) / (VungChon(1, i + 1) - VungChon(1, i)) NoiSuy1 = VungChon(j, i) + (Hang - VungChon(1, i)) * TangAnPha TangAnPha = (VungChon(j + 1, i + 1) - VungChon(j + 1, i)) / (VungChon(1, i + 1) - VungChon(1, i)) NoiSuy2 = VungChon(j + 1, i) + (Hang - VungChon(1, i)) * TangAnPha TangAnPha = (NoiSuy2 - NoiSuy1) / (VungChon(j + 1, 1) - VungChon(j, 1)) TraBang2Chieu = NoiSuy1 + (Cot - VungChon(j, 1)) * TangAnPha GoTo Thoat: End If Next j End If Next i Thoat: 'TraBang = UBound(VungChon.Value, 2) End Function PHP: Sao chép. Function Noisuy(Hang, Cot As Double, ByVal bangns As Range) As Double ' Ham sau cho phep noi suy ca bang mot chieu va hai chieu CNPM Dim Tg1, Tg2, Delta As Double Dim m As Long ' so hang Dim n As Long ' so cot Dim i, j As Long Dim Found As Boolean n = bangns.Columns.Count m = bangns.Rows.Count Found = False For j = 1 To n Bangns(m + 1, j) = Bangns(m, j) Next j For i = 1 To m Bangns(i, n + 1) = Bangns(i, n) Next i ' bay gio chung ta co mot mang hai chieu kich thuoc m x n For j = 2 To n - 1 If (bangns(1, j) <= Cot) And (bangns(1, j + 1) >= Cot) Then Delta = (Cot - bangns(1, j)) / (bangns(1, j + 1) - bangns(1, j)) Found = True Exit For End If Next j If Not Found Then MsgBox ("So noi suy nam ngoai Hang cua BangNS") End End If For i = 2 To m - 1 If (bangns(i, 1) <= Hang) And (bangns(i + 1, 1) >= Hang) Then Tg1 = bangns(i, j) + (bangns(i, j + 1) - bangns(i, j)) * Delta Tg2 = bangns(i + 1, j) + (bangns(i + 1, j + 1) - bangns(i + 1, j)) * Delta Delta = (Hang - bangns(i, 1)) / (bangns(i + 1, 1) - bangns(i, 1)) Noisuy = Tg1 + (Tg2 - Tg1) * Delta Found = True Exit For End If Next i If Not Found Then MsgBox ("So noi suy nam ngoai cot cua BangNS") End End If End Function PHP: Sao chép. Function noisuy(ByVal r As Range, ByVal hang As Double, ByVal cot As Double) As Variant Dim i, j, h1, h2, co1, co2 As Integer Dim ns1, ns2 As Double If hang = r(r.Rows.Count, 1) And cot = r(1, r.Columns.Count) Then noisuy = r(r.Rows.Count, r.Columns.Count) Exit Function ElseIf hang = r(r.Rows.Count, 1) Then For j = 2 To r.Columns.Count - 1 If cot >= r(1, j) And cot < r(1, j + 1) Then co1 = j co2 = j + 1 Exit For End If Next noisuy = ns(r(1, co1), r(1, co2), cot, r(r.Rows.Count, co1), r(r.Rows.Count, co2)) ElseIf cot = r(1, r.Columns.Count) Then For i = 2 To r.Rows.Count - 1 If hang >= r(i, 1) And hang < r(i + 1, 1) Then h1 = i h2 = i + 1 Exit For End If Next noisuy = ns(r(h1, 1), r(h2, 1), hang, r(h1, r.Columns.Count), r(h2, r.Columns.Count)) Else For i = 2 To r.Rows.Count - 1 If hang >= r(i, 1) And hang < r(i + 1, 1) Then h1 = i h2 = i + 1 Exit For End If Next For j = 2 To r.Columns.Count - 1 If cot >= r(1, j) And cot < r(1, j + 1) Then co1 = j co2 = j + 1 Exit For End If Next ns1 = ns(r(h1, 1), r(h2, 1), hang, r(h1, co1), r(h2, co1)) ns2 = ns(r(h1, 1), r(h2, 1), hang, r(h1, co2), r(h2, co2)) noisuy = ns(r(1, co1), r(1, co2), cot, ns1, ns2) End If End Function PHP: Sao chép. Function ns(ByVal a As Double, ByVal b As Double, ByVal c As Double, ByVal x As Double, ByVal y As Double) ''Laulemroi va toi As Double ns = x + (y - x) * (c - a) / (b - a) End Function Function finds(ByVal r As Range, ByVal hang As Double, ByVal cot As Double) As Variant Dim h1, h2, co1, co2 As Integer Dim ns1, ns2 As Double Dim r1, r2 As Range Set r1 = r.Rows(1): Set r2 = r.Columns(1) Dim Fn As WorksheetFunction Set Fn = Application.WorksheetFunction On Error Resume Next If hang < r(2, 1) Or hang > r(r.Rows.Count, 1) Or cot < r(1, 2) Or cot > r(1, r.Columns.Count) Then finds = "Out Range": Exit Function Else h1 = Fn.Match(hang, r2): h2 = h1 + 1 co1 = Fn.Match(cot, r1): co2 = co1 + 1 ns1 = ns(r(h1, 1), r(h2, 1), hang, r(h1, co1), r(h2, co1)) ns2 = ns(r(h1, 1), r(h2, 1), hang, r(h1, co2), r(h2, co2)) finds = ns(r(1, co1), r(1, co2), cot, ns1, ns2) End If End Function Tuy nhiên nếu dùng thêm hàm index và match có lẽ nhẹ nhàng hơn nhiều hàm if! Lần chỉnh sửa cuối: 22/11/11 H

hoanh286

Thành viên mới
Tham gia 16/4/11 Bài viết 1 Được thích 0 hic, sao minh down về nhưng ko thể dùng đc hàm của bạn, nó cứ báo lỗi NAME. bạn nào có thể giúp mình đc ko? Cảm ơn nhiều :D SA_DQ

SA_DQ

/(hông là gì!
Thành viên danh dự Tham gia 8/6/06 Bài viết 14,776 Được thích 23,229 Nghề nghiệp U80
hic, sao minh down về nhưng ko thể dùng đc hàm của bạn, nó cứ báo lỗi NAME. bạn nào có thể giúp mình đc ko? Cảm ơn nhiều :D Nhấp chuột vào đây để mở rộng...
Có khi nào chương trình diệt VIRUS trong máy bạn nó xơi tái cái hạm tự tạo í rồi cũng nên! Đang đói mà! K

kicon

Thành viên chính thức
Tham gia 26/9/10 Bài viết 89 Được thích 16 Tui ko chạy được code nào hết...sao kì vậy... H

hoangtm533

Thành viên mới
Tham gia 23/3/07 Bài viết 1 Được thích 0 Làm sao để add hàm macro đó vào bạn.Thanks N

naulluan3388

Thành viên mới
Tham gia 11/5/11 Bài viết 3 Được thích 2
SA_DQ đã viết: Quan sát dòng lệnh 9 & 10 mình thấy còn có thể rút gọn thêm (về cách viết) để đỡ rườm rà. Đó là tính trước 2 biểu thức, như sau Tính trước cho y2: tại phần sau của dòng lệnh 3 sẽ là y2 = Rng.Offset(, 1) - y1 Tương tự như vậy, tại phần sau của dòng lệnh 7 sẽ là: a12 = Cells(Clls.Row, Rng.Column + 1) - a11 & tại phần sau của dòng lệnh 8 là: a22 = Cells(Clls.Row + 1, Rng.Column + 1) - a12 Nhấp chuột vào đây để mở rộng...
cảm ơn bác rất nhiều ....... em tin tưởng hoàn toàn vào bác :D L

lehoangcd09a

Thành viên mới
Tham gia 13/9/12 Bài viết 4 Được thích 0 tai sao khi copy đoạn code vao thi khi dùng lai không được vậy mọi người P

phan_huythai

Thành viên chính thức
Tham gia 15/9/12 Bài viết 60 Được thích 1 không dùng được là không dùng được thế nào chứ. bạn phải nói rõ ra mọi người mới giúp được chứ ( nến bạn muốn biết thêm thì hỏi Châu Quang Phúc cd09b. hehe chắc bạn biết thằng này. nó cũng rành Vba lắm) N

nvh077

Thành viên mới
Tham gia 12/6/11 Bài viết 1 Được thích 0 Có ai biết đổi ngược lại hàng và cột ko giúp mình với. Các hàm 1 chiều của các bạn viết thì toàn là tra theo hàng, giờ mình có bảng tra theo cột thì phải làm sao? Ví dụ: 1 3 5 7 8 6.5 4 2 Thanks các bạn! T

tienvung

Thành viên mới
Tham gia 10/7/13 Bài viết 1 Được thích 0
connhangheo đã viết: em xin giải thích hàm của em như sau, mọi người cho ý kiến về code giúp em Nhấp chuột vào đây để mở rộng...
Bác cho hỏi nếu bảng tra mình muốn để ở Sheet khác thì phải làm như thế nào? Thanks T

TVGTKONTUM

Thành viên mới
Tham gia 16/9/09 Bài viết 5 Được thích 23 Cám ơn anh keeponlylove rất nhiều, nhờ anh chỉnh lại một chút để khi thay đổi các giá trị trong bảng tra thì hàm vẫn có thể chạy bình thường được J

johnny92

Thành viên mới
Tham gia 2/10/12 Bài viết 1 Được thích 0 bác cho em hỏi la hàm ngoại suy thì như thế nào? Em có một bản cel này, trong sheet bản tra. Chỉ khi nào x,y tăng thì mới làm được vậy; có cách giải quyết khác khi không phải lập bảng cho x, y tăng không? và em còn có 1 ô không có x mà vẫn có y thì giải quyết ra sao? T

thamnth2110

Thành viên mới
Tham gia 1/4/15 Bài viết 2 Được thích 0
connhangheo đã viết: em mới học VBA, mọi người xem file em viết 2 hàm này rồi cho em ý kiến để em hoàn thiện hơn, Thanks Nhấp chuột vào đây để mở rộng...
bạn ơi cho mình hỏi dùng hàm này có thể ngoại suy các giá trị bên ngoài không? hay là mình phải dùng hàm khác. mình mới tìm hiểu VBA thôi, xin chỉ giáo 1

12C7_CG

Thành viên mới
Tham gia 22/11/15 Bài viết 12 Được thích 0
dangvutuan đã viết: Mình là dân kỹ thật nên sử dụng nội suy từ rất lâu (từ năm 1998) nên cũng đã viết ra hàm nội suy để dùng riêng. Cũng phải qua thực tế sử dụng rất nhiều lần mới viết được một hàm ưng ý (vì trong lĩnh vực kỹ thuật rất cần sự chính xác và tin cậy), tiện đây xin giới thiệu để các bạn tham khảo: ' One Directions Interpolate Function ' Author : Dang Vu Tuan ' Function NS(table_array, Lookup_value) Dim NumRows As Integer, i As Integer Dim Max, Min Dim Range1 As Range, Range2 As Range NumRows = table_array.Rows.Count Set Range1 = table_array.Columns(1) Set Range2 = table_array.Columns(2) ' check for case if val = last value in range1 If Lookup_value = Range1.Cells(NumRows) Then NS = Range2.Cells(NumRows) Exit Function End If ' Get Max and Min Max = Range1.Cells(1) Min = Range1.Cells(1) For i = 1 To NumRows If Max <= Range1.Cells(i) Then Max = Range1.Cells(i) If Min >= Range1.Cells(i) Then Min = Range1.Cells(i) Next i ' Return an error if lookup_value is not within range1 If Lookup_value > Max Or Lookup_value < Min Then NS = "Out of range" 'Evaluate("NA()") Exit Function End If ' Do linear interpolation For i = 1 To NumRows - 1 If (Lookup_value >= Range1.Cells(i) And Lookup_value <= Range1.Cells(i + 1)) Or (Lookup_value <= Range1.Cells(i) And Lookup_value >= Range1.Cells(i + 1)) Then If (Range1.Cells(i) - Range1.Cells(i + 1)) <> 0 Then NS = (Range2.Cells(i + 1) + (Range2.Cells(i) - Range2.Cells(i + 1)) * (Lookup_value - Range1.Cells(i + 1)) / (Range1.Cells(i) - Range1.Cells(i + 1))) Else NS = Range2.Cells(i) End If Exit Function End If Next i End Function Và đây là hàm nội suy hai chiều: ' Two Directions Interpolate Function ' Author : Dang Vu Tuan ' Function NS2(Data_Range As Range, x, y) Dim A(), xMax, yMax, xMin, yMin Dim Nx, Ny, i, J, k1, k2, k3, k4, k12, k34 'Get the data Nx = Data_Range.Columns.Count Ny = Data_Range.Rows.Count ReDim A(Nx, Ny) For i = 1 To Nx For J = 1 To Ny A(i, J) = Data_Range(J, i) Next J Next i 'Check data xMax = A(2, 1) xMin = A(2, 1) For i = 2 To Nx If xMax < A(i, 1) Then xMax = A(i, 1) If xMin > A(i, 1) Then xMin = A(i, 1) Next i yMax = A(1, 2) yMin = A(1, 2) For J = 2 To Ny If yMax < A(1, J) Then yMax = A(1, J) If yMin > A(1, J) Then yMin = A(1, J) Next J If x < xMin Or x > xMax Or y < yMin Or y > yMax Then NS2 = "Out of range" Exit Function End If 'Do linear interpolation For i = 2 To Nx - 1 If (A(i, 1) <= x And x <= A(i + 1, 1)) Or (A(i, 1) >= x And x >= A(i + 1, 1)) Then For J = 2 To Ny - 1 If (A(1, J) <= y And y <= A(1, J + 1)) Or (A(1, J) >= y And y >= A(1, J + 1)) Then k1 = A(i, J) k2 = A(i + 1, J) k3 = A(i, J + 1) k4 = A(i + 1, J + 1) If (A(i + 1, 1) - A(i, 1)) = 0 Then k12 = k1 k34 = k3 Else k12 = k1 + (k2 - k1) * (x - A(i, 1)) / (A(i + 1, 1) - A(i, 1)) k34 = k3 + (k4 - k3) * (x - A(i, 1)) / (A(i + 1, 1) - A(i, 1)) End If If (A(1, J + 1) - A(1, J)) = 0 Then NS2 = k12 Else NS2 = k12 + (k34 - k12) * (y - A(1, J)) / (A(1, J + 1) - A(1, J)) End If Exit Function End If Next J End If Next i End Function Hai hàm trên mình viết để dễ theo dõi nên thực sự còn có thể compact được hơn nữa. Nhấp chuột vào đây để mở rộng...
bác ơi sao em copy về dùng mà giá trị trả lại hết =0 vậy bác thông não em với Bạn phải đăng nhập hoặc đăng ký để trả lời bài viết tại đây.

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

L nhờ hoàn thiện file dò xổ số (2 người xem)
  • levovantoan
  • Hôm qua, lúc 23:25
  • Giải thích, gỡ rối, xử lý lỗi công thức
Trả lời 0 Đọc 19 Hôm qua, lúc 23:25 levovantoan L K Các nút Buttom, Combobox, Textbox bị thay đổi kích thước ...
  • kaoehtkid
  • Thứ hai lúc 19:04
  • Những vấn đề chung
Trả lời 13 Đọc 274 Hôm qua, lúc 19:07 ongke0711 ongke0711 HeSanbi Thuật ngữ "Đối chiếu Unicode" quan trọng trong việc xử lý chuỗi ký tự
    • Thích
  • HeSanbi
  • 13/12/25
  • Xử lý chuỗi ký tự
Trả lời 2 Đọc 217 Hôm qua, lúc 17:38 HeSanbi HeSanbi huuthang_bd Cùng xây dựng file Gia Phả (1 người xem)
    • Thích
  • huuthang_bd
  • 30/12/13
  • Xây dựng ứng dụng.
Trả lời 43 Đọc 21K Hôm qua, lúc 15:48 Maika8008 Maika8008 Nguyenkhang2404 Tính định mức sản phẩm
    • Chấp nhận
  • Nguyenkhang2404
  • 24/7/25
  • Hàm và công thức Excel
Trả lời 11 Đọc 916 Hôm qua, lúc 14:27 nguyenanhtruong2409 N T Lọc dự liệu với hai điều kiện
  • tiny1010
  • 16/3/10
  • Cấu trúc dữ liệu Excel và việc Xử lý dữ liệu
Trả lời 18 Đọc 7K Hôm qua, lúc 14:11 nguyenanhtruong2409 N N Tổng hợp 2 sheet khác nhau (có 1 cột dữ liệu trùng) trong goole sheet
  • Na7979
  • Hôm qua, lúc 14:01
  • Google Sheets
Trả lời 0 Đọc 15 Hôm qua, lúc 14:01 Na7979 N D
  • Question Question
Tách dòng tự động theo điều kiện bằng VBA
    • Cười
  • duongnhuxuyen
  • 12/12/25
  • Lập Trình với Excel
Trả lời 17 Đọc 403 Hôm qua, lúc 12:04 ptm0412 ptm0412 P Lỗi hàm VBA phải add-in sau mỗi lần mở file
  • phamdinh.huy.aladin@gmail
  • Thứ hai lúc 10:18
  • Hàm và công thức Excel
Trả lời 7 Đọc 228 Hôm qua, lúc 08:11 minhnghia123 M PhanTuHuong Nếu diễn đàn GPE đóng cửa?
    • Thích
    • Yêu thích
  • PhanTuHuong
  • Chủ nhật lúc 23:46
  • Thư giãn
Trả lời 18 Đọc 625 Hôm qua, lúc 00:08 Gà Con yêu VBA Gà Con yêu VBA M Sai lệch vùng dữ liệu khi tạo Name Range bằng VBA
    • Buồn
  • Mr_Siro
  • Thứ tư lúc 10:57
  • Giải thích, gỡ rối, xử lý lỗi công thức
Trả lời 5 Đọc 148 Thứ năm lúc 13:23 Mr_Siro M P Tìm giá trị tồn kho đầu ngày (1 người xem)
  • ptthuongtn
  • Thứ tư lúc 15:15
  • Hàm và công thức Excel
Trả lời 3 Đọc 151 Thứ năm lúc 11:22 Duy Tùng 9x Duy Tùng 9x skygatevn Xin giúp đỡ về việc áp dụng hàm phù hợp để phân tách dữ liệu
  • skygatevn
  • Thứ tư lúc 11:59
  • Hướng dẫn sử dụng các hàm trong Excel
Trả lời 3 Đọc 110 Thứ tư lúc 13:52 skygatevn skygatevn PhanTuHuong Bán sách Excel nâng cao để ủng hộ đồng bào bão lũ năm 2025!
    • Yêu thích
  • PhanTuHuong
  • 10/12/25
  • Câu lạc bộ hoạt động xã hội
Trả lời 5 Đọc 331 Thứ tư lúc 12:43 GPE-Trợ Lý GPE-Trợ Lý D Xin giúp.......Kết hợp countifs và Sumproduct để đếm dữ liệu và tính số lượng tổng không trùng lặp với nhiều điều kiện
  • dieppk.nb92
  • Chủ nhật lúc 01:22
  • Hàm và công thức Excel
Trả lời 14 Đọc 431 Thứ tư lúc 10:20 dieppk.nb92 D GPE-Trợ Lý CHUNG TAY HƯỚNG VỀ MIỀN TRUNG NĂM 2025
    • Thích
  • GPE-Trợ Lý
  • 24/11/25
  • Câu lạc bộ hoạt động xã hội
Trả lời 12 Đọc 905 Thứ tư lúc 07:38 PhanTuHuong PhanTuHuong HeSanbi
  • Đã giải quyết
WeatherXL - Ứng dụng lấy dữ liệu Thời tiết siêu nhanh (***Đang phát triển lại)
    • Thích
    • Yêu thích
  • HeSanbi
  • 30/5/20
  • Lập Trình với Excel
Trả lời 92 Đọc 27K Thứ ba lúc 19:57 Maika8008 Maika8008 ongke0711
  • Question Question
Tải hóa đơn điện tử (https://hoadondientu.gdt.gov.vn/) Excel Vba (1 người xem)
    • Thích
    • Yêu thích
    • Cảm ơn
  • ongke0711
  • 6/10/24
  • Lập Trình với Excel
4 5 6 Trả lời 580 Đọc 83K Thứ ba lúc 08:39 pycckuu410 pycckuu410 E
  • Đã giải quyết
VBA code thay thế cho pivot-table lấy top 10, bottom 10
    • Thích
  • eagle12
  • 8/12/25
  • Lập Trình với Excel
Trả lời 24 Đọc 591 Thứ hai lúc 16:19 eagle12 E H tìm kiếm nội dung liên kết giữa cac bảng , cac sheet trong excel
  • H_P
  • 13/12/25
  • Tìm kiếm, dò tìm và tham chiếu
Trả lời 2 Đọc 158 Thứ hai lúc 05:30 DeTong D Xem thêm… Chia sẻ: Facebook X Bluesky LinkedIn Reddit Pinterest Tumblr WhatsApp Email Chia sẻ Link

Thành viên có số lượng bài viết cao nhất tháng

  • Maika8008 37
  • thanthanhan 22
  • dungpham01 19
  • ongke0711 19
  • eagle12 16
  • ptm0412 16
  • nguyenanhtruong2409 16
  • Phan Thế Hiệp 13
  • HUONGHCKT 12
  • vic_it 11
  • nhhnam 10
  • pycckuu410 10
  • Vũ Hải Sơn 9
  • HeSanbi 9
  • dieppk.nb92 8
  • Gà Con yêu VBA 8
  • bsbnhh 7
  • duongnhuxuyen 7
  • Hana2610 6
  • kaoehtkid 6

Thành viên có điểm tương tác cao nhất tháng

  • Phan Thế Hiệp 64
  • Maika8008 31
  • thanthanhan 18
  • ongke0711 17
  • ptm0412 16
  • HeSanbi 14
  • dungpham01 11
  • HUONGHCKT 9
  • eagle12 9
  • Cúc Hr 8
  • dieppk.nb92 6
  • Mr.hieudoanxd 5
  • befaint 5
  • pycckuu410 5
  • SA_DQ 5
  • Phuocam 4
  • nguyenanhtruong2409 4
  • nhhnam 2
  • Mr_Siro 2
  • Gà Con yêu VBA 2

Thời gian đếm ngược.

000 Ngày 00 Giờ 00 phút 00 giây Thân mời tham dự sự kiện sinh nhật GPE 2025
  • Trang chủ
  • Diễn đàn
  • Excel và Kỹ Thuật
  • Website này sử dụng cookies. Tiếp tục sử dụng trang này, đồng nghĩa với việc bạn chấp nhận website sử dụng cookies. Chấp nhận Tìm hiểu thêm.…
Back Top Bottom

Từ khóa » Cách Nội Suy 1 Chiều Trong Excel