我對程序設計有點新穎,原本只是試圖改進電子表格,但它超越了在Excel中使用基本功能。我有一個表,我有一個函數可以查看第一列中的建築物編號,然後查看其他兩個相應列中的開始日期和結束日期,以確定是否應該在日曆工作表上填充特定塊。出現此問題的原因是,同一建築物號碼可能會出現多次不同的日期,我需要找到與正確日期匹配的條目。將excel公式轉換爲VBA函數
我能夠創建一個雖然複雜的工作公式來找到第一個實例,並瞭解到我可以在false語句中重新添加一個嵌套的if,並稍做更改。我可以繼續這樣做,但它會變得非常龐大和繁瑣。我試圖找到一種方法來爲公式創建一個函數,其中包含一個變量,它會查看它已經被使用了多少次,因此它會繼續在表格中搜索符合參數的答案。
這是目前我的公式:
=IFERROR(IF(AND(DATE('IF SHEET (2)'!$F$7,MATCH('IF SHEET (2)'!$C$2,'IF SHEET (2)'!$C$2:'IF SHEET (2)'!$N$2,0),'IF SHEET (2)'!C$4)>=VLOOKUP("2D11"&1,A2:F6,4,0),DATE('IF SHEET (2)'!$F$7,MATCH('IF SHEET (2)'!$C$2,'IF SHEET (2)'!$C$2:'IF SHEET (2)'!$N$2,0),'IF SHEET (2)'!C$4)<=VLOOKUP("2D11"&1,A2:F6,4,0)),IF(VLOOKUP("2D11"&1,A2:F6,3,0)="2D11",VLOOKUP("2D11"&1,A2:F6,6,FALSE)),"NO ANSWER"),"ERROR")
如果您看到2D11&1
是我需要1的變量,因此這將是「次數它在功能+1被使用」,那麼我可以只循環它,以便它會繼續檢查,直到它用完2D11或找到匹配的。我以前沒有發佈過,我通過大量的試驗和錯誤來做這件事,所以如果你需要更多的信息,請發佈並說出來,然後我會盡量提供它。
因此,不要讓某人嘗試理解我發佈的可笑公式,儘管我會盡量簡化說明我需要完成的事情,並試圖瞭解如何將其轉化爲VBA功能。所以,我有點看幾步:
- 匹配與
建築物名稱爲輸出單元格的行中列建築物名稱的第一個實例。 - 日期與輸出單元格連接> =第一個條目的開始日期(用戶在D列中輸入)。
- 日期是否與輸出單元連接< =第一個輸入的結束日期(用戶在E列中輸入)。
- 如果部件1,部件2和部件3全部爲真,則輸入建築物第一個實例的單元名稱(位於列F)。
- 如果部分1,2,或3是假,然後循環看建築物名稱落筆列的下一個實例1
希望這使事情變得比公式更清楚,因此我能夠得到幫助因爲我對VBA的瞭解很少,所以我仍然很困難。
這是一種公式,它是可能的,如果你住在一起,就明白最好的,因爲建築開始(我從經驗中知道)。您是否從建築號碼,開始日期和結束數據開始?這是什麼意思「*找出*如果它應該填充特定的塊......」? – chuff
我剛剛發現它的一部分可以由於冗餘而被刪除。該公式不再需要IF(VLOOKUP(「2D11」&1,A2:F6,3,0)=「2D11」),因爲該部分用於檢查名稱是否正確,但不再需要。也必須刪除a)在FALSE之後。 –
所以更好的解釋我猜是一列有一個計數後的數字,它出現在列C的次數。列B和C都是下拉框,列B是區域,所以在這種情況下,2D塊。然後C列根據該區塊中的建築物的區塊下拉。 D,E和F欄填寫用戶的方框。 D列有一個開始日期,它將被佔用,E列有一個結束日期被佔用。 F欄是他們進入的地方,誰將佔領大樓。希望有助於一些。 –