vba問題 range(“a1 iv1”)有雜亂的數字(不是按大小排序的),寫vba把這些數字

2021-07-08 20:35:11 字數 4445 閱讀 2113

1樓:匿名使用者

sub 氣泡排序()

arr = range("a1:iv1) '將單元格範圍賦值給陣列arr

n = 256 '已知元素個數

for i = 1 to n - 1 '外迴圈次數for j = 1 to n - i '內迴圈次數if arr(1,j) > arr(1,j + 1) then '比下一個大則交換位置

t = arr(1,j)'暫存

arr(1,j) = arr(1,j + 1)'取下1列到本列arr(1,j + 1) = t'暫存賦值給下1列end if'結束判斷

next j'內迴圈到達預定次數退出

next i'外迴圈到達預定次數退出

range("a1:iv1) =arr'已排序賦值回原來單元格範圍'當然,你也可以賦值到其他單元格範圍

end sub

以上是vba**,其實用公式也很簡單的:

=small($a1:$iv1,column(a1))公式放在a2單元格向右填充到iv1單元格。

2樓:

sub 昌泡()

dim i, j, temp, arr

arr = range("a1:iv1").valuefor i = 1 to ubound(arr, 2) - 1for j = i to ubound(arr, 2)if arr(1, i) > arr(1, j) thentemp = arr(1, i)

arr(1, i) = arr(1, j)arr(1, j) = temp

end if

next

next

range("a1:iv1") = arrend sub

vba中能這樣表示嗎:range(1,1)或cells("a1").如不能,那應如何表示range行和列(行和列都是數字而不是字母)

3樓:一百℃豬

用cells(行,列) 表示單一單元格

用range(cells(行1, 列1), cells(行2, 列2)) 表示一個區域

vba中range(“a1”)=range(“b1).formular是什麼意思

4樓:魚木混豬喲

兩處錯誤,正確寫法為:

range("a1") = range("b1").formula**意思是a1等於b1的公式

比如,b1中存在公式=sum(b2:b10)則a1的值也是=sum(b2:b10)公式

5樓:元小翠

在vba中range("bb1")表示對活動工作表bb1單元格的引用。

在vba中,range代表某一單元格、某一行、某一列、某一選定區域(該區域可包含一個或若干連續單元格區域),或者某一三維區域。

range集合用法

本部分將說明下列返回 range物件的屬性和方法:

range屬性

cells屬性

range 和 cells

offset屬性

union方法

range屬性

可用 range(arg)(其中 arg 為區域名稱)來返回代表單個單元格或單元格區域的 range物件。下例將單元格 a1 中的值賦給單元格 a5。

worksheets("sheet1").range("a5").value = _

worksheets("sheet1").range("a1").value

下例設定單元格區域 a1:h8 中每個單元格的公式,用隨機數填充該區域。在沒有物件識別符(句號左邊的物件)的情況下,使用 range屬性將返回活動表上的一個區域。

如果活動表不是工作表,則該方法無效。在沒有明確的物件識別符的情況下,使用 range屬性之前,可用activate方法來啟用工作表。

worksheets("sheet1").activate

range("a1:h8").formula = "=rand()" 'range is on the active sheet

下例清除區域 criteria 中的內容。

worksheets(1).range("criteria").clearcontents

如果用文字引數指定區域地址,必須以 a1 樣式記號指定該地址(不能用 r1c1 樣式記號)。

cells屬性

可用 cells(row, column)(其中 row 為行號,column 為列標)返回單個單元格。下例將單元格 a1 賦值為 24。

worksheets(1).cells(1, 1).value = 24

下例設定單元格 a2 的公式。

activesheet.cells(2, 1).formula = "=sum(b1:b5)"

雖然也可用range("a1") 返回單元格 a1,但有時用 cells屬性更為方便,因為對行或列使用變數。下例在 sheet1 上建立行號和列標。注意,當工作表啟用以後,使用 cells屬性時不必明確宣告工作表(它將返回活動工作表上的單元格)。

sub setuptable()

worksheets("sheet1").activate

for theyear = 1 to 5

cells(1, theyear + 1).value = 1990 + theyear

next theyear

for thequarter = 1 to 4

cells(thequarter + 1, 1).value = "q" & thequarter

next thequarter

end sub

雖然可用 visual basic 字串函式轉換 a1 樣式引用,但使用cells(1, 1) 記號更為簡便(而且也是更好的程式設計習慣)。

可用 expression.cells(row, column) 返回區域中的一部分,其中 expression 是返回 range物件的表示式,row 和 column 為相對於該區域左上角的偏移量。下例設定單元格 c5 中的公式。

worksheets(1).range("c5:c10").cells(1, 1).formula = "=rand()"

range 和 cells

可用 range(cell1, cell2) 返回一個 range物件,其中 cell1 和 cell2 為指定起始和終止位置的 range物件。下例設定單元格區域 a1:j10 的邊框線條的樣式。

with worksheets(1)

.range(.cells(1, 1), _

.cells(10, 10)).borders.linestyle = xlthick

end with

注意每個 cells屬性之前的句點。如果前導的 with 語句應用於該 cells屬性,那麼這些句點就是必需的。本示例中,句點指示單元格處於第一張工作表上。

如果沒有句點,cells屬性將返回活動工作表上的單元格。

offset屬性

可用 offset(row, column)(其中 row 和 column 為行偏移量和列偏移量)返回相對於另一區域在指定偏移量處的區域。下例選定位於當前選定區域左上角單元格的向下三行且向右一列處的單元格。由於必須選定位於活動工作表上的單元格,因此必須先啟用工作表。

worksheets("sheet1").activate

'can't select unless the sheet is active

selection.offset(3, 1).range("a1").select

union方法

可用 union(range1, range2, ...) 返回多塊區域,即該區域由兩個或多個連續的單元格區域所組成。下例建立由單元格區域 a1:

b2 和 c3:d4 組合定義的物件,然後選定該定義區域。

dim r1 as range, r2 as range, mymultiarearange as range

worksheets("sheet1").activate

set r1 = range("a1:b2")

set r2 = range("c3:d4")

set mymultiarearange = union(r1, r2)

mymultiarearange.select

使用包含若干塊的選定區域時,areas屬性很有用。它將一個多塊選定區域分割為單個的 range物件,然後將這些物件作為一個集合返回。使用返回的集合的count屬性可檢測一個選定區域是否包含多塊區域,如下例所示。

sub nomultiareaselection()

numberofselectedareas = selection.areas.count

if numberofselectedareas > 1 then

msgbox "you cannot carry out this command " & _

"on multi-area selections"

end if

end sub

vba中fori10to1step2表示什麼意思

初始值為10,然後以 2遞減。因為1不滿足步長為 2的條件,其實也就是迴圈了10,8,6,4,2。從10向1遞減,幅度為0,第一次是10,第二次i 8這樣 vb程式,迴圈結構 for i 1 to 10 step 2 的具體意思是什麼?迴圈 迴圈變數 是i並初始i 的值為1 to10 如果i 到達1...

excel用VBA寫從1加到100的程式

你好,很高興為你回答這個問題。樓上的回答也很好,這裡我提供另一種思路,各位大佬自行比較。sub fillingexample dim i for i 1 to 100 cells i,1 value 1 i 2 i next end sub sub sumexample dim i dim resu...

數學問題在正方體ABCDA1B1C1D1中

1 1 連結pd cp d1c,作pm cd1,設pd m,正方體的一個稜長為a,cd1 2a,pd m 2 a 2 c1p m 2 a 2 pd,d1pc是等腰三角形,m是cd1的中點,pm pc 2 cm 2 m 2 a 2 a 2 2 m 2 a 2 2 s pcd1 cd1 pm 2 2a ...