VBA Goal Seek | Jak pomocí funkce Goal Seek najít hodnotu v aplikaci Excel VBA?
Hledání cílů v aplikaci Excel VBA
Goal Seek je nástroj dostupný v aplikaci Excel VBA, který nám pomáhá najít požadovaný počet, který je třeba dosáhnout, abychom se dostali ke stanovenému cíli.
Jste například student a ze šesti dostupných předmětů jste zacílili průměrné skóre 90%. Od této chvíle jste dokončili 5 zkoušek a zbývá vám pouze jeden předmět, vaše očekávané skóre z pěti absolvovaných předmětů je 89, 88, 91, 87, 89 a 90. Nyní chcete vědět, kolik musíte skórovat závěrečná zkouška k dosažení celkového průměrného procentního cíle 90%.
Toho lze dosáhnout pomocí GOAL SEEK v listu aplikace Excel i v kódování VBA. Podívejme se, jak to funguje s VBA.
Syntaxe hledání cílů VBA
Ve VBA Goal Seek musíme specifikovat hodnotu, kterou měníme, a dospět ke konečnému cílenému výsledku, takže zadejte odkaz na buňku pomocí objektu VBA RANGE, později můžeme přistupovat k možnosti GOAL SEEK.
Níže je uvedena syntaxe hledání cíle ve VBA.
- Range (): V tomto případě musíme zadat odkaz na buňku tam, kde potřebujeme dosáhnout cílové hodnoty.
- Cíl: V tomto argumentu musíme zadat, jaký je cíl, kterého se snažíme dosáhnout.
- Změna buňky: V tomto argumentu musíme dodat změnou hodnoty buňky, kterou potřebujeme k dosažení cíle.
Příklady hledání cílů Excel VBA
Následuje příklad hledání cíle v aplikaci Excel VBA.
Tuto šablonu Excel VBA Goal Seek Excel si můžete stáhnout zde - Šablona VBA Goal Seek ExcelVBA Goal Seek - Příklad č. 1
Vezměme si příklad pouze průměrného skóre zkoušky. Níže je uvedeno očekávané skóre 5 předmětů z absolvované zkoušky.
Nejprve musíme dospět k průměrnému skóre z 5 absolvovaných předmětů. Použijte funkci PRŮMĚR v buňce B8.
V tomto příkladu je naším cílem 90, Změna buňky bude B7 . Goal Seek nám tedy pomůže najít cílené skóre z finálního předmětu, abychom dosáhli celkového průměru 90.
Spusťte podproces v modulu třídy VBA.
Kód:
Sub Goal_Seek_Example1 () End Sub
Nyní potřebujeme výsledek v buňce B8, takže zadejte tento odkaz na rozsah pomocí objektu RANGE.
Kód:
Sub Goal_Seek_Example1 () Range ("B8") End Sub
Nyní vložte tečku a zadejte možnost „Goal Seek“.
Prvním argumentem je „Cíl“, abychom mohli dosáhnout RANGE B8, musíme zadat náš konečný cíl. V tomto příkladu se snažíme dosáhnout cíle 90.
Kód:
Sub Goal_Seek_Example1 () Range ("B8"). GoalSeek Goal: = 90 End Sub
Dalším argumentem je „Změna buňky“, kterou musíme zadat, do které buňky potřebujeme novou hodnotu, abychom dosáhli cíle.
Kód:
Sub Goal_Seek_Example1 () Range ("B8"). GoalSeek Goal: = 90, ChangingCell: = Range ("B7") End Sub
V tomto příkladu je naší měnící se buňkou buňka Sub 6, tj. Buňka B7.
Dobře, pojďme spustit kód, abychom zjistili, co je třeba udělat v konečném předmětu, abychom dosáhli celkového průměrného procenta 90.
Takže v závěrečném předmětu musí být hodnoceno 95, aby byl celkový průměr 90.
VBA Goal Seek - Příklad č. 2
Naučili jsme se, jak použít VYHLEDÁVÁNÍ CÍLŮ k nalezení počtu potřebného k dosažení cíle. Nyní uvidíme pokročilý příklad nalezení skóre závěrečné zkoušky pro více než jednoho studenta.
Níže jsou uvedena očekávaná skóre 5 předmětů po zkoušce.
Jelikož nacházíme cíl pro více než jednoho studenta, musíme použít smyčky, níže je uveden kód pro vás.
Kód:
Sub Goal_Seek_Example2 () Dim k As Long Dim ResultCell As Range Dim ChangingCell As Range Dim TargetScore As Integer TargetScore = 90 For k = 2 to 5 Set ResultCell = Cells (8, k) Set ChangingCell = Cells (7, k) ResultCell.GoalSeek TargetScore, ChangingCell Next k End Sub
Tento kód prochází všemi skóre studentů a přináší skóre závěrečné zkoušky potřebné k dosažení celkového průměru 90.
Konečný výsledek tedy máme nyní,
Student A potřebuje skóre jen 83, aby zajistil celkové 90 procent, a Student D potřebuje skóre 93.
Podívejte se ale na Student B & C, kteří musí při závěrečné zkoušce získat 104, což není vůbec možné.
Takto pomocí analýzy GOAL SEEK můžeme najít požadovaný počet k dosažení cílového počtu v polovině projektu nebo procesu.
Věci k zapamatování
- Goal Seek je k dispozici jak s nástrojem listu, tak s nástrojem VBA.
- Výsledná buňka by měla vždy obsahovat vzorec.
- Musíme zadat hodnotu cíle a změnit odkaz na buňku k nástroji pro hledání cíle.