< návrat zpět

MS Excel


Téma: automatizace SOVLERu za užití VBA rss

Zaslal/a 5.3.2018 20:50

Zdravím,

potřeboval bych malou radu, snažím se zautomatizovat užití Solveru pomocí VBA, ten využívá SolverAdd funkci k zadání omezujících podmínek. Užitím proměnné která obsahuje String s odkazem na buňku není problém.

set odkazNaPole = Range("A1")
var = Cstr(odkazNaPole.Address)
SolverAdd CellRef:=var, Relation:=2, FormulaText:="$D$2"

Ale chtěl bych vytvořit proměnnou var která by v sobě nesla toto

var = "B2*$B$1+C2*$C$1"

nebo

var = "SUMPRODUCT(B2:C2;$B$1:$C$1)"

toto už výše zmíněný způsob neumožňuje. Nemáte někdo nějáké nápady, nebo jak řešit problém jinak, aniž bych se dostal k použití listu?

Zaslat odpověď >

icon #039778
eLCHa
Možná blbost, ale nechybí vám tam rovnítko?

var = "=B2*$B$1+C2*$C$1"citovat
#039801
avatar
Sub Makro2()
'
' Makro2 Makro
'

SolverOk SetCell:="$E$2", MaxMinVal:=1, ValueOf:=0, ByChange:="$B$1:$C$1", _
Engine:=2, EngineDesc:="Simplex LP"

prom = "=B2*$B$1+C2*$C$1"
prom2 = "=B3*$B$1+C3*$C$1"

SolverAdd CellRef:=prom, Relation:=1, FormulaText:="$D$2"
SolverAdd CellRef:=prom2, Relation:=1, FormulaText:="$D$3"

SolverSolve
End Sub

------------------------------------------------
výsledkem je, ať je tam rovnítko, nebo ne, že se omezující podmínka vůbec nenačtecitovat
#039802
elninoslov
A nemá byť náhodou CellRef typu Range ? Nie String. Lebo keď si pozriem nejaké príklady na MSDN, tak všade sa uvádza príklad s Range.citovat
#039803
avatar
https://msdn.microsoft.com/en-us/vba/excel-vba/articles/solveradd-function

SolverAdd( CellRef, Relation, FormulaText)

CellRef Required Variant. A reference to a cell or a range of cells that forms the left side of a constraint. Relation Required Integer. The arithmetic relationship between the left and right sides of the constraint. If you choose 4, 5, or 6, CellRef must refer to decision variable cells, and FormulaText should not be specified.

-------------------------------------------------------
Je required reference na cell nebo range of cell. Datový typ je Variant.

alternativa je v tuto chvíli, že si povedu výpočetní list, kam dočasně uložím data s formulemy, ale tomu bych se chtěl vyhnout a vytvořit makro tak aby došlo pouze načtení z konkrétního listu vstupy, v makru se vytvoří vše od formulí ... až k proměnych s výsledky, a poté vytvořím výstupní list kam rovnou budu odesílat výsledkycitovat
#039804
elninoslov
Hádať sa nebudem, Solver nepoužívam, len tam nikde nevidím príklad, ani zmienku o tom, že sa má uvádzať textová adresa oblasti/bunky či vzorec. Všade vidím Range. "B2*$B$1+C2*$C$1" , "=B2*$B$1+C2*$C$1", teda aj obsah premenných prom a prom2 aj keď sú Varianty, tak sú automaticky interpretované ako String, nie sú Range. Sú to všetko Stringy.

Ak je napriek tomuto nedorozumeniu takéto použitie Solveru správne, spĺňa výsledok "=B2*$B$1+C2*$C$1" podmienku Integer ?

Prípadne sa zaregistrujte, aby ste mohol priložiť nejakú prílohu s príkladom toho čo máte, a výsledku ktorý chcete dosiahnuť. Možno sa tu odborníci na Solver nájdu.citovat

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