Board logo

標題: [發問] 返回最後5筆有數值的資料 [打印本頁]

作者: y54161212    時間: 2020-12-18 12:16     標題: 返回最後5筆有數值的資料

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

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

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

先謝謝了
作者: hcm19522    時間: 2020-12-18 14:35

https://blog.xuite.net/hcm19522/twblog/589516858
作者: y54161212    時間: 2020-12-18 15:39

這excel函數我要讀一獨才可以(笑
乍看起來有點困難
作者: 准提部林    時間: 2020-12-18 18:40

本帖最後由 准提部林 於 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
作者: y54161212    時間: 2020-12-21 17:44

回復 4# 准提部林

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

TT = Cells(i, 1) & IIf(TT = "", "", vbCrLf) & TT
我嘗試過把 & IIf(TT = "", "", vbCrLf) & TT 這一段disable後
只會出現N=5的時候的TT
作者: 准提部林    時間: 2020-12-21 19:29

本帖最後由 准提部林 於 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
作者: Andy2483    時間: 2023-12-27 11:09

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

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

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
作者: hcm19522    時間: 2023-12-27 12:37

(輸入編號12191) google網址:https://hcm19522.blogspot.com/
作者: singo1232001    時間: 2023-12-28 10:29

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




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)