• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    在EXCEL中對某列數值自動排名次的實現方法

    發布: 2007-7-14 20:28 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 91次 | 進入軟件測試論壇討論

    領測軟件測試網 江西省寧都縣電信局 賴志強

    ---- 一.問題的提出

    ---- 在各單位的生產經營活動中,常常會組織一些競賽評比活動。為了掌握活動的進展情況,定期發通報排名次是競賽活動的組織者經常采用的一種方法。排名次的具體要求為:

    ---- 1.各競賽單位在表中的位置是固定不變的.

    ---- 2.另外,增加一列數據,根據各單位完成任務的情況,動態顯示各單位的名次。

    ---- EXECL 97是一款強大的電子表格處理軟件。筆者在利用其提供的【數據/排序】命令進行排序時,其結果卻不能滿足上述兩點使用要求。即既破壞了位置的不變性,也不能顯示名次數值。實為EXCEL 97美中之不足。于是,也常見有人利用人工排出名次,再添上數值的,效率實在太低。

    ---- 那么,有沒有一種方法能自動地、動態地完成上述排名次操作呢?筆者經過研究,終于找到了解決的方法。

    ---- 二.實現方法

    ---- 排名次就其實質而言,是一種排序算法。筆者使用VISUAL BASIC語言編制了一段宏過程qksort(),在標準冒泡排序算法的基礎上,實現了排名次算法。源程序如下:

    注釋:**********************************************
    注釋:宏名:qksort()
    注釋:功能:本宏的作用為對選定區域的數值按降序排名次。
    注釋:使用:用鼠標選擇一列需排名次的數值,執行【工具/宏/宏/執行】
    注釋:命令運行本宏,則該列的右一列數值即顯注釋:示該列名次結果
    注釋:本宏命令的錄入:執行【工具/宏/宏/創建】命令既可。
    注釋:*********************************************
    Option Base 0
    Sub qksort()
    Dim rnum As Integer  注釋:rnum定義需排名的數的個數
    rnum = Selection.Rows.Count
    ReDim a(rnum) As Integer, b(rnum)
    As Long, c(rnum) As Integer
    注釋:a(rnum)保存數的下標位序,b(rnum)保存需排名次的數值項

    For i = 0 To rnum - 1
      a(i) = i + 1
      b(i) = Selection.Rows.Cells(i + 1)
      c(i) = i + 1
    Next i     注釋:b(i)中為要排序的數值,a(i)中為下標位序

    For k = rnum - 1 To 0 Step -1
    kmax = 0
    For j = 1 To k
      If b(kmax) > b(j) Then
        temp = b(kmax)
        b(kmax) = b(j)
        b(j) = temp
        temp = a(kmax)
        a(kmax) = a(j)
        a(j) = temp
      End If
      kmax = j
    Next j
    Next k 注釋:利用冒泡排序法將數值(b())及其下標位置(a())進行排序

    i = 1
    c(a(rnum - 1) - 1) = i
    For k = 1 To rnum - 1
      If b(rnum - 1 - k) < > b(rnum - k) Then
        i = i + 1
        c(a(rnum - 1 - k) - 1) = i
      Else
        c(a(rnum - 1 - k) - 1) = i
      End If
    Next k   注釋:排出名次,并將名次放入c()數組中

    For k = 0 To rnum - 1
    Selection.Rows.Cells(k + 1, 2) = c(k)
    Next k 注釋:將c()數組中的名次依次寫入選擇區域的右列,完成排名

    End Sub

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>