返回列表 上一主題 發帖

[發問] 返回最後5筆有數值的資料

[發問] 返回最後5筆有數值的資料

各位先進好
有個程式疑問請教
我在A欄位不同列有序號
我想要在msgbox內顯示最後5筆有數值的資料

是否能指導一下怎麼優化這程式

目前若該欄位是空白就會返回空白

先謝謝了

CheckWeek.zip (19.67 KB)

返回數值

莫讓他人錯誤傷害自己

google"EXCEL迷"  blog  或google網址:https://hcm19522.blogspot.com/

TOP

這excel函數我要讀一獨才可以(笑
乍看起來有點困難
莫讓他人錯誤傷害自己

TOP

本帖最後由 准提部林 於 2020-12-18 18:41 編輯

Private Sub CommandButton1_Click()
Dim R, TT$, N&
R = Cells(Rows.Count, 1).End(xlUp).Row
For i = R To 2 Step -1
    If Cells(i, 1) <> "" Then
       TT = Cells(i, 1) & IIf(TT = "", "", vbCrLf) & TT
       N = N + 1: If N = 5 Then Exit For
    End If
Next i
TT = "最後幾筆資料是:" & vbCrLf & TT
If N > 0 Then MsgBox TT & String(2, Chr(10)) & "本周的周數是:" & DatePart("ww", Now, vbMonday)
End Sub

TOP

回復 4# 准提部林

謝謝版大回覆解答
有個小疑問想請教
IIf(TT = "", "", vbCrLf) & TT
這一句的意思是甚麼?

TT = Cells(i, 1) & IIf(TT = "", "", vbCrLf) & TT
我嘗試過把 & IIf(TT = "", "", vbCrLf) & TT 這一段disable後
只會出現N=5的時候的TT
莫讓他人錯誤傷害自己

TOP

本帖最後由 准提部林 於 2020-12-21 19:32 編輯

回復 5# y54161212


TT 是累增的文字串,
當 TT 有一個以上時, 才須用"分隔附號"串接

1) TT = "C"
2) TT = "B" & "-" & TT ....這時 TT = B-C
3) TT = "A" & "-" & TT ....這時 TT = A-B-C

TOP

本帖最後由 Andy2483 於 2023-12-27 11:16 編輯

謝謝 准提部林前輩指導
後學藉此帖學習到 vbCrLf,String(),DatePart()....等,學習方案如下
執行結果:


Private Sub CommandButton1_Click()
Dim 最後列號, 組合字串$, 符合條件筆數&, 當下時間 As Date, 週$, 起算日
最後列號 = Cells(Rows.Count, 1).End(xlUp).Row
For i = 最後列號 To 2 Step -1
    If Cells(i, 1) <> "" Then
       組合字串 = Cells(i, 1) & vbCrLf & 組合字串
       符合條件筆數 = 符合條件筆數 + 1: If 符合條件筆數 = 5 Then Exit For
    End If
Next i
週 = "ww"
當下時間 = Now
起算日 = vbMonday
組合字串 = "最後幾筆資料是:" & vbCrLf & Mid(組合字串, 1, Len(組合字串) - 1)
If 符合條件筆數 > 0 Then MsgBox 組合字串 & String(2, Chr(10)) & "本周的周數是:" & DatePart(週, 當下時間, 起算日)
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

(輸入編號12191) google網址:https://hcm19522.blogspot.com/
google"EXCEL迷"  blog  或google網址:https://hcm19522.blogspot.com/

TOP

Sub test()
i = Split("Provider=Microsoft.,Jet.OLEDB.4,.0;Extended Properties=Excel ,8,.0;Data Source=", ",")
If Application.Version > 12 Then i(1) = "ACE.OLEDB.12": i(3) = 12
Set cn = CreateObject("adodb.connection"): cn.Open Join(i, "") & ThisWorkbook.FullName
q = "select top 5 * from[sheet1$A1:A]where LotNo is not NULL order by LotNo desc "
MsgBox Join(Application.Index(cn.Execute(q).getrows, 1, 0), Chr(10))
End Sub

TOP

        靜思自在 : 好事要提得起,是非要放得下,成就別人即是成就自己。
返回列表 上一主題