< návrat zpět

MS Excel


Téma: Zjednodušení vzorce rss

Zaslal/a 17.4.2018 15:55

Dobrý den, přijde mi, že píšu vzorec hrozně složitě a další rozšíření vede ke značně dlouhému řetězci.

Prakticky se jedná o řadu, kde zkoumám jestli je pole volné a když ano, tak zapiš, ale aby to bralo postupně směrem doprava, jako vzorec v příloze.

If Cells(21, 2) <> "" And Cells(3, 1) <> "" And Cells(21, 3) <> "" And Cells(21, 4) = "" Then Call reseticek3
If Cells(21, 2) <> "" And Cells(3, 1) <> "" And Cells(21, 3) = "" Then Call reseticek2
If Cells(21, 2) = "" And Cells(3, 1) <> "" Then Call reseticek1

Sub reseticek1()
Cells(21, 2) = Cells(1, 1)
Cells(22, 2) = Cells(5, 1)
Cells(23, 2) = Cells(3, 1)
Cells(3, 1) = 0
End Sub
Sub reseticek2()
Cells(21, 3) = Cells(1, 1)
Cells(22, 3) = Cells(5, 1)
Cells(23, 3) = Cells(3, 1)
Cells(3, 1) = 0
End Sub

atd...

Děkuji moc za rady :)

Zaslat odpověď >

#040147
elninoslov
Skúste priložiť normálnu XLSM prílohu, kde bude lepšie vidieť, čo chcete dosiahnuť (čo testujete a čo dopĺňate), a kde budú aj procedúry "resetnicekX".citovat
#040148
elninoslov
Keď tak pozerám čo robí ten Váš kód resetboxu, tak resetboxu2 robí to isté, nič viac netreba, žiadne ďalšie procedúry ako reseticek1, reseticek2 ... .
Teda robí to to isté, ale vôbec neviem čo 5
Nech je to ale čo chce, tak asi by som si urobil ďalší pokus aj cez polia a pomeril rýchlosť. Záleží aj na množstve buniek, ktoré chcete nakoniec obsiahnuť...
Sub resetboxu2()
Dim i As Long
If Cells(3, 1) <> "" Then
For i = 9 To 1 Step -1
If Cells(21, 1).Offset(0, i) = "" And WorksheetFunction.CountIf(Cells(21, 2).Resize(, i), "<>") = i - 1 Then
Cells(21, 2).Resize(3).Offset(0, i - 1) = WorksheetFunction.Transpose(Array(Cells(1, 1), Cells(5, 1), Cells(3, 1)))
Cells(3, 1) = 0
End If
Next i
End If
End Sub
Příloha: zip40148_wo-co-tady-go.zip (20kB, staženo 20x)
citovat
#040150
avatar
Děkuji moc, to je přesně ono, co jsem myslel. :)citovat
#040151
avatar
Pak by mě ještě zajímalo, pokud bych chtěl zpětně získat pouze počet kusů a smazat danou buňku, viz VBA v příloze, které nevím jak zjednodušit již zmíněným postupem, abych opět nemusel rozepisovat a něco se přiučit. Děkuji moc, jste nejlepší. :)) 1citovat
#040153
elninoslov
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Poz As Long

If Not Intersect(Cells(1, 2), Target) Is Nothing Then
On Error Resume Next
Poz = WorksheetFunction.Match(Cells(1, 2), Cells(18, 11).Resize(, 11), 0)
On Error GoTo 0

Application.EnableEvents = False
If Poz > 0 Then
Cells(3, 1) = Cells(17, 10 + Poz)
Cells(17, 10 + Poz).Resize(2) = WorksheetFunction.Transpose(Array(0, "Prázdný"))
Else
Cells(3, 1).ClearContents
End If
Application.EnableEvents = True
End If
End Sub

Ale zase je tu množstvo poznámok. V tej tabuľke sa majú nájsť, spočítať a vymazať všetky výskyty daného dielu (To treba urobiť potom inak)? Alebo iba prvý/posledný? Z ktorej strany? Ak tam nenájde daný diel alebo je B1="", vymaže modrú bunku A3.

Táto príloha potom samozrejme prináša ďalšie a ďalšie otázky s ohľadom na predchádzajúce nedovysvetlené zadanie. Napr. : Hľadáte Vy v predchádzajúcom požiadavku naozaj prvý prípad zprava, keď je splnené že do nejakej bunky sú všetky zaplnené a len tá posledná bunka je prázdna? Alebo hľadáte prvú prázdnu zľava?
Ak tam totiž sú medzery ("prázdne" boxy), tak aj v prvom prípade nastane, že sa naplní box zprava. Mne to príde divné, ale to možno len preto, lebo neposkytujete dobrý (žiadny) popis toho, čo chcete dosiahnuť. Toho čo robíte. Z Vašeho makra nemusí byť vôbec zrejmé čo chcete dosiahnuť, keďže ako laik nemusíte mať uváženú správnu metodiku.citovat
#040154
avatar
Jedná se rozpracovanou výrobu, napíšu číslo dílu a hned se mi načtou kusy, z rozpracovaného boxu do pole B3 kam dále dodávám kusy až do naplnění boxu. 1

1. zadám do pole B1 co chci hledat
2. na základě této hodnoty se změní buňka C10, pokud se změní, tak se vyhledává, jestli je někde rozpracovaný box "měl by tam být vždy maximálně jen jeden" protože nelze mít v poli C10 současnou výrobu a k tomu mít zásobník v boxu => musím vědět po načtení dílu, že už mám nějaké kusy hotovy.

Podle mě vaše makro funguje naprosto skvěle! Děkuji 1 Ale pokud víte o nějaké profesionálnější variantě, moc rád se přiučím, je pro mě velmi zajímavé. 1 10citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje