vba excel尋找對應特徵進行排列

2022-04-15 21:15:54 字數 1767 閱讀 2792

1樓:匿名使用者

sub xabc()

dim s as string

dim i, k as integer

dim sht1, sht2 as excel.worksheet

set sht1 = sheets("sheet1")

set sht2 = sheets("sheet2")

k = len(sht2.cells(1, 1))

for i = 1 to sht1.[a65536].end(xlup).row

s = left(sht1.cells(i, 1), k)

if s = sht2.cells(1, 1) then sht2.cells(sht2.

[a65536].end(xlup).row + 1, 1) = sht1.

cells(i, 1)

if s = sht2.cells(1, 2) then sht2.cells(sht2.

[b65536].end(xlup).row + 1, 2) = sht1.

cells(i, 1)

if s = sht2.cells(1, 3) then sht2.cells(sht2.

[c65536].end(xlup).row + 1, 3) = sht1.

cells(i, 1)

next i

end sub

----------------------------------補充

還是應該用left,因為你的特徵值就是在前面,用find,或者instr,也得判斷是不是前面幾位相符,否則001.002.003,算哪組?

而且我用len取了特徵值的長度。就有了動態的意思,比如你的00,002,003可以是 0001,0002,0003,巨集都不用改。

如果你還有004,005,就是增加if的判斷而已,如果太多,就把這兒換成 select case,沒法自動去判斷你有幾個特徵值需要判斷的。

2樓:太極健

執行此巨集即得您的結果

sub 分類排列()

dim arr, arr1

dim ir&, x&, i&, y&

with sheets("sheet1")

ir = .range("a65536").end(xlup).row

arr = .range("a1:a" & ir).value

end with

redim arr1(0 to ubound(arr), 1 to 3)

for z = 1 to 3

arr1(0, z) = z

next z

for x = 1 to 3

i = 0

for y = 1 to ubound(arr)

if left(arr(y, 1), 1) * 1 = arr1(0, x) then

i = i + 1

arr1(i, x) = arr(y, 1)

end if

next y

next x

sheets("sheet2").range("a1").resize(ubound(arr1), 3) = arr1

end sub

如果sheet1表a列還有其他的資料,可修改一下**,來提取a列的不同資料,智慧增加類別。具體應根據您的**來寫**,因為您知道,**一般得根據您的具體情況而定。

如果只有此三類資料,用這個**就行了。

資料量大,要考慮執行速度,此**用陣列寫的,資料量大對速度沒有影響。

如何證明矩陣不同特徵值對應特徵向量線性無關,是不是很麻煩

用數學歸納copy法。一個特徵值對應的特徵向量線性無關。假設結論對k 1成立,則對k,設p1,p2,pk是對應於不同特徵值a1,a2,ak的特徵向量,令b1p1 bkpk 0,左乘a得,b1a1p1 bkakpk 0,第一式乘a1與第二式相減得b2 a2 a1 p2 bk ak a1 pk 0,由歸...

為什麼不同特徵值對應的特徵向量一定線性無關?還有怎麼判斷n階矩陣有n個線性無關的特徵向量

特徵值a的幾何重數就是 n r a ae 也就是齊次線性方程組 a ae x 0 的基礎解系所含向量的個數 幾何重數不超過代數重數 對於不同特徵值對應的特徵向量的無關性,直接用線性無關的定義,藉助vandermonde行列式即可 至於幾何重數的具體資訊,從jordan標準型裡直接可以讀出來 1.矩陣...

特徵值一定可以求出它對應的特徵向量嗎

一個矩陣的特徵值一定可以求出該特徵值對應的特徵向量。設 a 是n階方陣,如果存在數m和非零n維列向量 x,使得 ax mx 成立,則稱 m 是a的一個特徵值,非零n維列向量 x是矩陣a對應於特徵值m的一個特徵向量。根據矩陣特徵值和特徵向量的定義可知,如果可以存在特徵值m,那麼一定存在非零特徵向量x。...