저는 GAS에 익숙하지 않아 Google 펀치 그룹에 Excel로 작성한 일부 VBA 코드를 복제하려고하므로 Google 시트에 사용할 수 있습니다. gyst는
google apps 스크립트 범위 내 값 찾기 및 오프셋 값 반환
- I 한장에 ID 배열 (트랜잭션) 나는 제 2 시트의 범위 내에서 각각의 ID를 찾아야
- (선택)
- ID가있는 경우가 ... 인 가 발견되면 오프셋 $$ 값을 가져와야합니다.
- ID가 발견되지 않으면 모든 $$ 값을 검색 한 후에 $ 1
- 을 검색해야합니다. 그러면 다음과 같이 곱해야합니다. 서로
var ss = SpreadsheetApp.getActiveSpreadsheet(),
sel = ss.getSheetByName('selections'),
trn = ss.getSheetByName('transactions');
function calcPayout(a,b,inv) {
var data = sel.getRange("B3:B");
// find a in data, then return offset(0,2) as div1
// find b in data, then return offset(0,2) as div2
return div1 * div2 * inv
}
. VBA에서
내가는
div1 = trn.Cells(i + 2, 11) // finds 'a' instead of user entering 'a'
div1 = data.Find(what:=div1).Offset(0, 2).Value
div2 = trn.Cells(i + 2, 12)
If opt2 = Empty Then GoTo calcLegReturn // calcReturn does 'return' calc
div2 = data.Find(what:=div2).Offset(0, 2).Value
이 사람이 나를 도울 수 ... 같은 일을 다음 사용? 필요한 경우 Google 시트의 모양은 this is a sample입니다.
답변 해 주셔서 감사합니다. 나는 GAS에서 무엇을하려고하는지 더 잘 표현하기 위해 '지불금'열의 수식을 업데이트했습니다. 당신이 볼 수 있듯이, 그것의 꽤 longwinded 및 지저분한 수식은 내가 이것을 관리하기 위해 VBA의 동등한 구글을 쓰려고 노력하는 이유입니다. –
수식이 작동하면 왜 가스를 귀찮게합니까? 어쨌든, GAS에서는'getRanges()'에 의해 값을 얻을 수 있습니다 ('getRange()'는 대단히 느리며 google뿐입니다). 그것은 당신에게 2 차원 배열을 제공합니다. 그런 다음'for' 루프로 배열을 검색 할 수 있습니다. 하지만 이런 식으로 10 + 라인의 코드를 작성하는 것은 가치가 없다고 생각합니다. –
예, 공식은 작동하지만 장기적으로는 실용적이지 않습니다. 그 특별한 공식은 반복된다. c. 현재 시트에서는 250 번이지만 다음 12 개월 동안에는 두 배가됩니다. 나는 또한 유사한 오프셋 계산을하는 스프레드 시트에 적어도 20 개의 다른 수식을 가지고있다. 이 수식이 반복 될수록 스프레드 시트가 커지고 (느리게) 반복되므로 반복 수식을 제거해야하는 이유는 무엇입니까? –