iT邦幫忙

0

關於VBA冒泡排序法問題?

vb
  • 分享至 

  • xImage

上網看了一些語法,可我發現冒泡排序法大部份都是橫向排序的語法,想請問高手們,如果我是要排序整個A欄直向的排序,也可以用冒泡排序法嗎? 假設我現在有一張EXCEL表格 (如附件),我的資料都會KEY入A欄中,是否有辦法用冒泡排序法?還是要用其他的方法呢? 如果可以能順便寫上語法教我嗎?? 謝謝你們!

看更多先前的討論...收起先前的討論...
slime iT邦大師 1 級 ‧ 2013-07-29 20:01:05 檢舉
Excel 的 資料 -> 排序 ....(不用冒泡)
wiwi1221提到:
EXCEL表格 (如附件)

沒有附件,沒有真相?疑惑
wiwi1221 iT邦新手 5 級 ‧ 2013-07-29 23:29:39 檢舉
我知道可以不用冒泡...可是現在就是規定要用冒泡做!不然我就按排序啦!呵呵
wiwi1221 iT邦新手 5 級 ‧ 2013-07-29 23:30:32 檢舉
SORRY呀!我的圖檔忘了放!
wiwi1221 iT邦新手 5 級 ‧ 2013-07-29 23:31:34 檢舉
外獅佬 iT邦大師 1 級 ‧ 2013-07-30 00:15:06 檢舉
把A:?當做一維陣列處理就好了....
橫的變直的,不也是一樣的處理方法嗎?
蟹老闆 iT邦大師 1 級 ‧ 2013-07-30 03:59:07 檢舉
wiwi1221提到:
冒泡排序法

這個老師很老囉,這是非常沒效率排序法,怎麼還在教這個?
TEMP=EMPTY
FOR I = 1 TO N
IF A&I > AI&+1 then (
TEMP=A&I+1
A&I+1=A&I
A&I=TEMP )
IF TEMP <> EMPTY THEN (
TEMP=EMPTY
I = 1
)
大概是這樣,不過用法及格式是有問題的,若是明白意思就可以解決
wiwi1221 iT邦新手 5 級 ‧ 2013-07-30 20:48:08 檢舉
我菜鳥....所以不太明白,不好意思落寞
wiwi1221 iT邦新手 5 級 ‧ 2013-07-30 20:48:46 檢舉
謝謝你的幫忙,我努力試試!謝謝灑花
外獅佬 iT邦大師 1 級 ‧ 2013-08-03 05:09:03 檢舉
服務業需要泡沫?
據我所知,只有網路曾經用過它……落寞
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
18
海綿寶寶
iT邦大神 1 級 ‧ 2013-07-30 07:24:33
最佳解答

排序 A 欄
從第 nMinRow 列到第 mMaxRow 列

&lt;pre class="c" name="code">
Option Explicit
Sub Bubblesort()
Dim temp As Variant
Dim i, j As Integer
Dim nMinRow As Integer
Dim nMaxRow As Integer

nMinRow = 2     '最小列號,無標題列即為 1
nMaxRow = 10    '最大列號

For i = nMinRow To nMaxRow - 1
    For j = i + 1 To nMaxRow
        If Cells(i, 1) >= Cells(j, 1) Then
            temp = Cells(i, 1)
            Cells(i, 1) = Cells(j, 1)
            Cells(j, 1) = temp
        End If
    Next j
Next i

End Sub
看更多先前的回應...收起先前的回應...

wiwi1221提到:
上網看了一些語法,可我發現冒泡排序法大部份都是橫向排序的語法

什麼樣的橫向排序語法
可否放超連結上來
疑惑

iT邦幫忙MVPantijava提到:
從第 nMinRow 列到第 mMaxRow 列

更正
是「到第 nMaxRow 列」

wiwi1221 iT邦新手 5 級 ‧ 2013-07-30 20:41:10 檢舉

這就是我上網看的!我看他動畫的演變是橫向的數字去排序的!如果我又搞烏龍,真的不好意思!自己翻書學程度真的很落漆...請多包涵!

謝謝你提供給我的程式,我今天有試跑過幾次,可我發現當我排序時,他最多只會排到我nMaxRow下給他的數值那一欄,而且數字也會往下跑,是因為氣跑排序法都依定會往下跑空出空格嗎?還是這是可以改變的呢?疑惑

只要是程式
當然可以改變

妳可以試著改變 nMinRow, nMaxRow 的值

或是把第13列

&lt;pre class="c" name="code">
If Cells(i, 1) >= Cells(j, 1) Then

改成

&lt;pre class="c" name="code">
If Cells(i, 1) &lt; Cells(j, 1) Then

看看有什麼差別
忙

服務業為什麼要學 VBA
妳主管是要整妳還是想追妳呀
疑惑

wiwi1221 iT邦新手 5 級 ‧ 2013-07-30 21:23:49 檢舉

追我是不可能!整人的機率大點!

wiwi1221 iT邦新手 5 級 ‧ 2013-07-30 21:52:37 檢舉
&lt;pre class="c" name="code">

If Cells(i, 1) < Cells(j, 1) Then

我試了這句,變遞減排序!但會從第一個空格往下排,所以如果我要讓它變成遞增排序,要從第一個空格往下排,也是可以的意思嗎?

正確
1.要遞增或遞減就修改第13列
2.要從第幾列(空格)排序到第幾列
就修改 nMinRow (開始列,最小是 1)
nMaxRow (結束列,看妳結束是第幾列)

16
ted99tw
iT邦高手 1 級 ‧ 2013-07-29 20:09:09

冒泡

Möchten Sie eine Schaumwasser?

泰大真是的看到女生就想拿礦泉水灌人家放手

12
zuyan
iT邦好手 1 級 ‧ 2013-07-30 08:54:43

看來邦友是在房仲業打滾.....
想"冒泡"了

汽泡排序法..

wiwi1221提到:
序,也可以用冒泡排序法嗎? 假設我現在有一張EXCEL表格 (如附件),我的資
料都會KEY入A

wiwi1221 iT邦新手 5 級 ‧ 2013-07-30 20:31:44 檢舉

我不是房仲業的啦!服務業....只是主管要我們自己翻書學VBA...我沒學過這種東西!所以可能很多東西常搞錯!哈哈!真不好意思Orz

我要發表回答

立即登入回答