返回列表 上一主題 發帖

[發問] 搜尋、比對,再複製過來的功能

[發問] 搜尋、比對,再複製過來的功能

大家好,我有一個功能想做,但是搜尋比對我不會寫


我會同時開三個檔案
一個是測試檔,裡面有按鈕,這邊也會列出所要的準則

第二個是資料檔
第三個是尺寸檔
共同點是學號
有點像ACCESS的主鍵

測試檔中 會給  所需要的學號   跟這個學號所要查出來的資訊
然後按鈕按下後  程式可以去搜尋比對  把要的資料填進來測試檔中


因為同時開好三個檔
所以直接呼叫是可以取得資料的

但是搜尋比對,我就不會了
再請各位大大幫忙,謝謝

EXCEL問題.rar (30.49 KB)
哈囉~大家好呀

回復 23# n7822123


我也再提供方法~~這兩個其實是一樣的,用的函數不同

MsgBox Format(Year(Date) & "/" & Month(Date) + 1, "emm") & "檔案"
MsgBox Format(Year(Date) & "/" & DatePart("m", Date) + 1, "emm") & "檔案"
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

本帖最後由 n7822123 於 2019-6-21 01:19 編輯

回復 20# 准提部林


感謝準大提供好多方法,受益匪淺 ^.^,算的我眼花撩亂了XD
Edate函數感覺可以完全被DateAdd所取代,只能用當間隔,彈性有限

MsgBox Format(Application.EDate(Date, 1), "emm") & "檔案"
MsgBox Format(DateAdd("m", 1, Date), "emm") & "檔案"


收穫最多的是Evaluate函數,之前沒用過這個函數!
覺得非常好用,自己試玩了一下 ^.^
感覺上只要是工作表函數都可以計算
雖然我已經習慣用 Application.工作表函數 或者 WorksheetFunction.工作表函數
但是這個函數的價值在於,可以直接把字串直接做運算,不需要額外解字串來處理,省下大量程式!

MsgBox Evaluate("3+2") '=5
MsgBox Evaluate("max(" & "20,30,40,99)")  '最大值99
MsgBox Evaluate("SIN(30*PI()/180)")  'Sin 30度=0.5
MsgBox Evaluate("DEC2HEX(253)")  '253的16進位表示=FD


但是VBA函數就不能了~~~~~可惜
MsgBox Evaluate("Hex(253)")  '錯誤

今天準大感覺心情很好,卯起來提供N種方法XD
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

再來兩種方法:
Private Sub CommandButton2_Click()
ym$ = Format(Date - Day(Date) + 32, "EMM") & "檔案"
MsgBox ym
End Sub


Private Sub CommandButton2_Click()
ym$ = Format(DateAdd("m", 1, Date), "EMM") & "檔案"
MsgBox ym
End Sub


===========================

TOP

回復 15# n7822123

Private Sub CommandButton2_Click()
d = CDate(Format(Now, "yyyy/m/1")) + 31
ym$ = Format(d, "emm") & "檔案"
MsgBox ym
End Sub

TOP

回復 15# n7822123


Private Sub CommandButton2_Click()
d& = Evaluate("edate(" & CLng(Date) & ", 1)")
ym$ = Format(d, "emm") & "檔案"
MsgBox ym
End Sub

TOP

回復 13# iceandy6150

Private Sub CommandButton1_Click()
c$ = Replace(Replace(Range("A1"), "年", ":"), "月", "")
If IsNumeric(c) Then c = "0:" & c
c = Application.Text(c, "[hh]年mm月")
Range("B1") = c
End Sub

======================

TOP

回復 16# n7822123


    感謝大大的回覆
因為我手上拿到的資料並沒有到職日
不然照大大這樣寫,是很方便
這些寫法我都會存檔
以後若有用到,就可以派上用場
感謝感謝
哈囉~大家好呀

TOP

回復 14# 准提部林


    年資的確有可能只有日 或 年+日  或 年+月 或年月日都有
但是我處理的資料,是第二手
也就是只有計算到月而已

我拿到的資料要嘛就是 3月、6月、11月這樣
或是1年1月

所以只剩下兩種  年+月  、只有月
但是年,又有分為1位數的跟2位數的,比如3年 跟 12年
月也是分為1位數的跟2位數的,比如4月 跟 11月

所以我只好想辦法來處理
比如說1年以內的人,獎金發3000元
滿1年6月的發4500元

我就先把各種資料,轉成00年00月
再用MID去取,VAL()變成可計算的數字,然後就可以判斷
誰該發3000元,誰該發4500元....以此類推

感謝大大回復喔
哈囉~大家好呀

TOP

回復 13# iceandy6150


   
如果滿半年就怎樣怎樣---> 先算出年資換算成月是幾月  滿半年就是年資>=6
如果滿一年 --> 年資>=12
用這些條件再來區分各級距的人該下什麼指令

參考看看

入職日期 = DateValue("6 / 4 / 2014")    '自己設定入職日期
年資 = Application.Text(Now - 入職日期, "yy/mm")
MsgBox "張三年資共" & Split(年資, "/")(0) * 12 + Split(年資, "/")(1) & "個月"
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

        靜思自在 : 人生不一定球球是好球,但是有歷練的強打者,隨時都可以揮棒。
返回列表 上一主題