Re: [算表] 搜尋重複的值,然後顯示在同一格(VBA)
這是 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)
Office 近期熱門文章
PTT數位生活區 即時熱門文章