2018年4月29日 星期日

Excel VBA 排序分類

需求:將相同類型的值和金額做加總,做成特定的表格。

對Excel VBA,熟練度還處在剛起步階段,想到利用排序加上迴園和判斷式來達成目地。








Sub Test()

'排序範圍(A2:C7)欄 xlAscending(遞減) xlDescending(遞增)。

   Range("A2:C7").Sort Key1:=Range("B2"), Order1:=xlAscending

'Text1 比對文字使用。

Dim Text1 As String

'設定複製及貼上的範圍值。

Dim CopyStart, CopyEnd, PastStart, PastEnd As Integer

'判斷最後一列。

 EndText = ActiveSheet.UsedRange.Rows.Count

'初始複製及貼上的範圍值。

 CopyStart = 2
 CopyEnd = 2
 PastStart = 0
 PastEnd = 0

 '抓取需判斷的初始文字。

 Text1 = Range("B" & CopyEnd)

'逐步判斷分類範圍。

For X = 0 To EndText
 
'判斷分類範圍,若比對值不同,將進行同類的值Copy至另一欄。

  If Text1 <> Range("B" & CopyEnd + 1) Then
 
'複製來源的開始位置及結尾位置。

  Range("A" & CopyStart & ":C" & CopyEnd).Copy
 
'設定要貼上的位置範圍。

  PastStart = PastStart + CopyStart

  PastEnd = PastEnd + CopyEnd

 '貼上來源分類資料。

  Range("G" & PastStart & ":I" & PastEnd).PasteSpecial

  Range("H" & PastEnd + 1).Value = "小計 :"

'計算加總值。

Range("I" & PastEnd + 1) = Application.Sum(Range("I" & PastStart & ":I" & PastEnd))

PastStart = PastStart - CopyStart + 1

PastEnd = PastEnd - CopyEnd + 1
 
'設定下個分類的開始位置。

 CopyStart = CopyEnd + 1

     
  End If
 
 '設定分類的結束位置。

  CopyEnd = CopyEnd + 1

Text1 = Range("B" & CopyEnd)

Next X



End Sub

沒有留言:

張貼留言

Ubuntu-Journalctl查看系統日誌

 近期所使用Ubuntu系統24小時開著,進行跑Python程式使用,但跑個2~3天,排程就無法正常寄信,SSH連線也無法正常連線,經查看後為wifi連線問題,暫先使用腳本排程進行重開wifi。 以下為記錄Journalctl指令。 使用Journalctl來從系統日誌上查看看問...