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 cílili na 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 při závěrečné zkoušce dosáhnout, abyste dosáhli 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
V cíli VBA Goal Seek musíme specifikovat hodnotu, kterou měníme, a dosáhnout konečného cíleného výsledku, proto zadejte odkaz na buňku pomocí objektu VBA RANGE. Později můžeme vstoupit do možnosti VYHLEDÁVÁNÍ CÍLŮ.
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.
VBA Goal Seek - Příklad č. 1
Vezměme si příklad pouze průměrného skóre vyšetření. 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 a Změna buňky bude B7 . Goal Seek nám tedy pomůže najít cílené skóre od finálního subjektu, 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, proto 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 dorazili do 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“, musíme dodat, ve které buňce potřebujeme novou hodnotu k dosažení 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 skóre 95, aby se získal 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 několik pokročilých 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 si zajistil celkové 90 procent, a Student D potřebuje skóre 93.
Podívejte se ale na studenta B & C. Při závěrečné zkoušce musí každý zaznamenat 104, což není vůbec možné.
Podobně jako pomocí analýzy GOAL SEEK můžeme najít požadovaný počet k dosažení cílového počtu uprostřed projektu nebo procesu.
Věci k zapamatování
- Goal Seek je k dispozici jak s nástroji 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 na nástroj pro hledání cíle.