Re: [算表] 搜尋重複的值,然後顯示在同一格(VBA)

看板Office作者 (windknife18)時間17年前 (2009/05/28 22:20), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
這是 VBA 的版本,VBA 使用的方法請參考精華區或以前的文章 ... Option Explicit Sub marco1() Dim i As Integer, j As Integer, k As Integer Dim rowC As Integer Dim rB As Range Dim data() As String Dim found As Boolean Application.ScreenUpdating = False '先將 F:H 的資料清除 Sheets(1).Range("F:H").ClearContents '計算多少筆資料要處理 rowC = Sheets(1).Range("A1").CurrentRegion.Rows.Count '先暫存資料,加速處理 Set rB = Sheets(1).Range(Cells(1, 1), Cells(rowC, 2)) ReDim data(rowC, 2) k = 0 For i = 1 To rowC '處理資料 j = 1 found = False While (j <= k) And (found = False) '比對有沒有出現過 If rB(i, 2) = data(j, 1) Then found = True data(j, 2) = data(j, 2) + "、" + rB(i, 1) End If j = j + 1 Wend If found = False Then '沒有出現過加入新資料 k = k + 1 data(k, 2) = rB(i, 1) data(k, 1) = rB(i, 2) End If Next i For i = 1 To k '列印資料 Cells(i, 6) = data(i, 1) Cells(i, 7) = data(i, 2) Next i Columns("F:G").Select Selection.Sort Key1:=Range("F2"), Order1:=xlAscending, Header:=xlYes, _ OrderCustom:=12, MatchCase:=False, Orientation:=xlTopToBottom, _ SortMethod:=xlStroke, DataOption1:=xlSortNormal Range("A1").Select Application.ScreenUpdating = True MsgBox ("完成!") End Sub ※ 引述《A1pha ([αλφα])》之銘言: : 軟體: : 微軟 EXCEL : 版本: : 2003 : 大家好, : 我知道可以利用CountIf SumIf來來將相同的一行資料的某格數值算出, : 但是假使我處理的資料不是數值的話怎麼辦? : 例如我現在要做一個勤務表, : 名字 勤務內容 : 張三 甲 : 李四 丙 : 王五 乙 : 陳六 辛 : 李八 丙 : 段四 甲 : 天心 戊 : 郝萌 丁 : 張飛 乙 : 關羽 庚 : 劉備 甲 : 要怎麼做到以班別來顯示姓名? : 甲班 張三、段四、劉備 : 乙班 王五、張飛 : 丙班 李四、李八 : . : . : . : 這樣 : PS 由於表示要印出來看的,所以需要直接顯示, : 不能用樞紐分析表的方法讓他只顯示有甲班的人,這樣來看。 : 謝謝大家 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.229.88.27 ※ 編輯: windknife18 來自: 61.229.80.156 (05/28 22:28)
文章代碼(AID): #1A7fsoot (Office)
文章代碼(AID): #1A7fsoot (Office)