< návrat zpět
MS Excel
Téma: Nefunkční vzorec
Zaslal/a Niffki 17.8.2011 13:57
Zdravím, mohu?
Proč mi tento vzorec napsaný ve vba nefunguje správně?
Dim r, i, rok, mesic, den As Long
Dim l As String
rok = Range("E1")
mesic = 8
r = 9
den = den + 1
l = Cells(r, 5)
Cells(r, 6).Formula = "=SUMIFS('" & l & "'!G13:G1000000,'" & l & "'!B13:B1000000,DATUM(" & rok & "," & mesic & "," & den & "),'" & l & "'!C13:C1000000,""příjem dílů z GRAMMERU"")"
Tím to se mi vzorec vloží do buňky ale pro správné vypočtění musím vzorec ručně potvrdit znovu.
Nevíte prosím co s tím? Díky
N.
Shtuchka(17.8.2011 18:16)#005810 Smažte z vzorci ' " & l & " '! . Všechno funguje. Nic nedělám ručně. Proč přidate toto?
citovat
Začátečník(17.8.2011 18:47)#005811 Netuším proč by měl mazat
' " & l & " '! - je to odkaz na list, ve kterém má data.
Možná bych se zaměřil na druhou podmínku. Není vyhodnocena jako textová.
Teď Excel 2007 (2010) nemám, ale v 2003 je nesprávně vyhodnocena textová podmínka. Chybí uvozovky.
Spíše by to chtělo konkrétní ukázku s daty, aby si nikdo nic nemusel vymýšlet..
citovat
Niffki(17.8.2011 20:16)#005812 Vzorec mi přestal fungovat správně když jsem do kodu dal tyto proměnné:
DATUM(" & rok & "," & mesic & "," & den & "). Tak třeba to bude tím, ale zatím jsem na nic nepřišel.
citovat
Začátečník(17.8.2011 20:20)#005814 čárky nahradit středníkem
Podívej se na syntaxi funkce DATUM(rok;měsíc;den)citovat
Shtuchka(17.8.2011 22:49)#005819 Nevzpomínám si, jak v Excel 2003, ale v Excel 2010 funkce DATUM funguje s čárkou místo středníkem.
citovat
RomanNTA(18.8.2011 7:18)#005820 To ukazuje spíš na to, že vkládáš do buňky, která je textová. Vzorec se ti ukáže ale nevypočte. Pak poklepeš nebo přes F2 vstoupíš do editace buňky, nic s ní neděláš a když ji potvrdíš ENTREM pak se vzorec vypočte. Excel se až pak pokusí zjistit, zda se nezměnila povaha buňky a protože najde rovnítko, začne počítat. Běžně se toto vyskytuje u buněk, které jsou nebo byly importovány z textových souborů. Mýlím se ???
citovat
Niffki(18.8.2011 8:07)#005821 Jj přesně takhle mi dělá. A jak k tomu předejít ? Díky za odpověď.
citovat
RomanNTA(18.8.2011 8:49)#005822 To není jednoduché. Chceto vyzkoušet co Ti bude fungovat.Něksdy stačí před vložení vzorce
.Columns("E:E").NumberFormat = "General" nebo je možné použít
.Columns("X").Replace What:="", Replacement:=Empty
.Columns("X:X").NumberFormat = "General"
Já na to používám své globalni funkce které pak kombinuji.
'-------------------------------------------------------------------------------'
Function posledni(sloupek As String) As Long
posledni = Range(sloupek & "65536").END(xlUp).Row
End Function
'-------------------------------------------------------------------------------'
Private Sub loc_nacti()
Dim i As Long
For i = 0 To 9
Selection.Replace What:=CStr(i), Replacement:=CStr(i), LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
Next i
End Sub
'-------------------------------------------------------------------------------'
Private Sub loc_vypln_vzorec()
Dim i As Long
With ActiveSheet
Selection.FillDown
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
call loc_nacti
End With
End Sub
'-------------------------------------------------------------------------------'
A pak používám v rámci cyklu apod. něco podobného
With Worksheets("Plan zisku")
.Activate
i = poslední("A")
.Range("D1").FormulaR1C1 = "=AND(VLOOKUP(RC6,'SQL'!C2:C6,4,0)=RC7,VLOOKUP(RC6,'SQL'!C2:C6,5,0)=RC8)"
.Range("D1:D" & i).Select
Call loc_vypln_vzorec
End With
Zkus a uvidíš. Excel je někdy tvrdohlavý :_) R.
citovat