2017-08-11 69 views
0

我努力與一個簡單的代碼,不合作與我;) 我在列L從行5開始的一些日期。日期格式爲yyyy.mm。但在公式欄中可以看到整個日期的格式爲dd.mm.yyyy如果找到一個日期,然後做...- VBA Excel

F是相同的日期,以相同的方式格式化。唯一的區別是這裏有一些單元格被合併。每個日期都位於與下兩個單元格合併的單元格中。
這意味着在單元格F5是一個日期。
該單元格與F6F7合併。
在單元格F8是下一個日期。此單元格合併...

我想從第L列中找到第一個日期,並在F列中找到它們,如果找到,請執行一些操作。

問題是變量Dates每次都是空的。我會很感激任何建議。

Public Sub Fsaldo() 

Dim Finanse As Worksheet 
Dim x As Range 
Dim Dates As Range 
Dim Sum As Range 
Dim State As Range 

Set Finanse = Sheets("Finanse") 

For Each x In Finanse.Range("L6:L100") 
    If x <= Now() And IsDate(x) Then 
     Set Dates = Finanse.Range("F5:F100").Find(What:=x, LookIn:=xlValues, _ 
     LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False) 
'  MsgBox Dates.Address 
'  MsgBox Data 
     Set Sum = Dates.Offset(0, 3) 
'  MsgBox sum.Address 
     Set State = x.Offset(0, 1) 
     State = Sum.Value + Sum.Offset(1, 0).Value + Sum.Offset(2, 0).Value 
    End If 
Next 

End Sub 

親切的問候 Neke

+0

你要找的F欄的日期...是正確的? – BruceWayne

+0

是的,你是對的。抱歉,是我的錯。我已經更正了上述文字。 – neke

回答

0

由於沒有解決我的問題,我自己做了...

再次澄清。在這兩欄中我都寫有dd.mm.yyyy的日期。所有單元格的格式都是自定義(yyyy.mm),因此在單元格中顯示的就像2017.07,但是在公式欄中仍然類似於01.07.2017。

上面的宏沒有工作,因爲方法查找被錯誤地使用。我改變了:

  • LookIn:xlFormulas'而不是查看單元格值我只是從公式欄中獲取信息。不知道爲什麼xlValues不起作用。值是相同的。

  • SearchOrder:xlColumns'此更改使我可以找到我在合併的單元格中搜索的內容。

也許它可以幫助別人......

0

我通過您的代碼看起來。您正在搜索x的範圍。我想一個簡單的抵消不會做的伎倆,因爲列F和L的日期不是在同一個順序? 代碼:

Dim x As Range 
(...) 
For Each x In Finanse.Range("L6:L100") 
If x <= Now() And IsDate(x) Then 
     Set Dates = Finanse.Range("F5:F100").Find(What:=x, LookIn:=xlValues, _ 
     LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False) 

如果簡單的偏移會工作,你可以嘗試:

If x <= Now() And IsDate(x) Then 
set Dates = Range(x).offset(0,-6).value 

如果您搜索的日期,儘量在末尾添加.value的。

Set Dates = Finanse.Range("F5:F100").Find(What:=x, LookIn:=xlValues, _ 
     LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).value 

或者不是搜索範圍搜索日期。我從來沒有在Excel vba中搜索範圍。我總是在變量中「讀取」單元格的值,然後搜索它。但是如果有重複,這會導致問題。

請讓我知道它是否有幫助。

+0

馬可,首先:感謝您的調查!關於您的第一個問題:日期的順序相同,但兩者之間的偏移量不是恆定的。一般來說,偏移量的技巧,以及我用數字替換日期時的代碼。它不適用於日期。我不知道爲什麼。 – neke

+0

Hi Neke;根據你的描述,我做了一個簡單的Excel。 – Marco

+0

我會認爲該錯誤是在.find部分。我的想法是,「日期」沒有處理值「finanse.range(F5:F100」......「。(通常在.find()後我write.activate或.select)我試圖解決它首先選擇範圍(範圍(「F5:F100」))選擇)然後找到單元格(Selection.Find(What:= x).Activate)然後將活動單元分配給日期(日期= ActiveCell) PS:如果你在使用日期,不要忘了,你可以在日期中轉換數值,但是,如果你有任何想法,我會讓你知道。 「CDate」 – Marco

相關問題