Strona 1 z 1

Kopiowanie formuł, adresy względne

: pt lip 12, 2019 10:53 am
autor: krzynio
Witam!
Otóż mam problem z kopiowaniem formuł. Korzystając z poniższej procedury kopiuję formuły z wiersza TemlateRow to kolejnych wierszy Row
Problem w tym, że takie kopiowanie kopiuje adresy bezwzględne formuł, tzn. jeżeli w komórce w wierszu TemplateRow mam formułę =A1*B1 to to zostanie ona skopiowana dokładnie taka jaka jest, podczas gdy ja chciałbym, by formuła kopiowała się tak jak po przeciągnięciu komórki w dół, czyli aby w kolejnych kopiowanych wierszach, wiersze z formuły też były inkrementowane czyli =A2*B2, =A3*B3 itp. Jak to zapisać? Czy jest możliwe w VBA?

Kod: Zaznacz cały

	
for Row=StartRow to RowCount-2
	for Col=StartCol to ColCount
		sh1.getCellByPosition(Col, Row).Formula = sh1.GetCellByPosition(Col, TemplateRow).Formula
	Next Col
Next Row

Re: Kopiowanie formuł, adresy względne

: pt lip 12, 2019 9:00 pm
autor: belstar
krzynio pisze: Czy jest możliwe w VBA?
Jest, choć nie tak prosto jak przy przeciąganiu.

Pętle już masz, dodaj licznik. wydobądź adresy ze zmiennych Col i Row, dodaj do adresów licznik i tak stworzysz nowy adres dla każdej iteracji pętli. Trochę programowania w basicu i to koniec.

Takiej prostej metody na wykonanie tego nie ma, lub o takiej nie słyszałem.

Edit: (sorry) Nie ze zmiennych Col i Row ale z:

Kod: Zaznacz cały

Twoja_zmienna_Adres = sh1.getCellByPosition(Col, Row).Formula
Bedzie to tekst (string), więc musisz korzystać z funkcji tekstowych basica, left, right, instr, mid itp.