VBA自定義函式 Minkowski距離

2021-09-29 17:01:03 字數 1397 閱讀 4159

接觸vba第一天,寫了個閔可夫斯基距離

當r=1時,距離為曼哈頓距離

當r=2時,距離為歐幾里得距離距離(直線距離)

當r→∞時,距離為切比雪夫距離

根據閔可夫斯基距離距離公式,在vba寫出以下**

public

function distance(a as range, b as range,

optional r as

integer=2

)dim i as

integer

'為支援橫向陣列和縱向陣列的距離計算,陣列長度設為「行長度和列長度兩者中較大的數值」

if a.rows.count > a.columns.count then

i = a.rows.count

else

i = a.columns.count

endifdim j as

single

j =0dim k as

integer

if r =

1then

'當r=1時,距離為

for k =

1to i

j = j +

abs(a(k)

- b(k)

)next k

elseif r =

999then

'當r→∞時(這裡用999表示),距離為

dim t as

single

for k =

1to i

t =0 t =

abs(a(k)

- b(k)

)if t > j then

j = t

endifnext k

elseif r =

2then

'當r=2時,距離為

for k =

1to i

j = j +

(a(k)

- b(k))^

2next k

j =sqr(j)

endif

distance = j

endfunction

由於設定了支援橫向陣列和縱向陣列,所以橫豎陣列都能運用此函式,

函式和其引數為: distance(a, b, r) 其中a和b型別為範圍(即a,b兩點的座標),r的型別為整數(選擇範圍為1, 2, 999),下面看個例子

有一說一,感覺在vba裡寫minkowski距離實際用處不太大

他山之石 VBA自定義函式

vba自定義函式自己是最近才開始使用的。其好處是可在工作表中直接呼叫,很方便。這裡,這位老師總結的很好,學習了!1 什麼是自定義函式?在vba中有vba函式,我們還可以呼叫工作表函式,我們能不能自已編寫函式呢?可以,這就是本集所講的自定義函式 2 怎麼編寫自定義函式?我們可以按下面的結構編寫自定義函...

VBA使用者自定義函式

函式是一組可重複使用的 可以在程式中的任何地方呼叫。這消除了一遍又一遍地編寫相同的 的需要。這使程式設計師能夠將乙個大程式劃分成許多小的可管理的功能模組。除了內建函式外,vba還允許編寫使用者定義的函式。乙個vba函式可以有乙個可選的return語句。如果要從函式返回值,則可使用return語句。例...

VBA第7課 編寫自定義函式

1.取工作表總個數 在工作表裡輸入 shcount 即可,以下同理 function shcount shcount sheets.count end function 2.取得單元格顯示的自定義函式 function getv rg as range getv rg.text end functi...