[google-apps-script] 열의 마지막 값 선택

G 열에 일부 값이있는 스프레드 시트가 있습니다. 일부 셀은 그 사이에 비어 있으며 해당 열의 마지막 값을 다른 셀로 가져와야합니다.

다음과 같은 것 :

=LAST(G2:G9999)

그것은 LAST기능이 아니라는 것을 제외하고 .



답변

따라서이 솔루션은 문자열을 매개 변수로 사용합니다. 시트에있는 행 수를 찾습니다. 지정된 열의 모든 값을 가져옵니다. 빈 문자열이 아닌 값을 찾을 때까지 끝에서 처음으로 값을 반복합니다. 마지막으로 가치를 되돌립니다.

스크립트:

function lastValue(column) {
  var lastRow = SpreadsheetApp.getActiveSheet().getMaxRows();
  var values = SpreadsheetApp.getActiveSheet().getRange(column + "1:" + column + lastRow).getValues();

  for (; values[lastRow - 1] == "" && lastRow > 0; lastRow--) {}
  return values[lastRow - 1];
}

용법:

=lastValue("G")

편집하다:

자동 업데이트 기능을 요청하는 댓글에 대한 응답으로 :

내가 찾을 수있는 가장 좋은 방법은 위의 코드와 함께 사용하는 것입니다.

function onEdit(event) {
  SpreadsheetApp.getActiveSheet().getRange("A1").setValue(lastValue("G"));
}

사용 섹션 상태 와 같은 셀에서 더 이상 함수를 사용할 필요가 없습니다 . 대신 업데이트하려는 셀과 추적하려는 열을 하드 코딩합니다. 이것을 구현하는 더 웅변적인 방법 (하드 코딩되지 않은 방법)이있을 수 있지만, 이것이 내가 지금 찾을 수있는 최선의 방법입니다.

앞서 언급 한 것과 같이 셀에서 함수를 사용하면 다시로드 할 때 업데이트됩니다. 아마도 onEdit()셀 함수에 연결하여 강제로 업데이트 하는 방법이있을 수 있습니다. 문서에서 찾을 수 없습니다.


답변

비슷한 대답 caligari의 대답에 대한 이지만 전체 열 범위를 지정하여 정리할 수 있습니다.

=INDEX(G2:G, COUNT(G2:G))


답변

실제로 여기에서 더 간단한 해결책을 찾았습니다.

http://www.google.com/support/forum/p/Google+Docs/thread?tid=20f1741a2e663bca&hl=ko

다음과 같이 보입니다.

=FILTER( A10:A100 , ROW(A10:A100) =MAX( FILTER( ArrayFormula(ROW(A10:A100)) , NOT(ISBLANK(A10:A100)))))


답변

범위 내에서 마지막 셀을 선택하기 위해 LAST () 함수는 현재 구현되지 않았습니다. 그러나 귀하의 예를 따르십시오.

=LAST(G2:G9999)

다음 과 같은 방법으로 INDEX ()COUNT () 함수를 사용하여 마지막 셀을 얻을 수 있습니다 .

=INDEX(G2:G; COUNT(G2:G))

spreedsheet에 동일한 문제 (sheet , cell )를 발견하고 해결 한 실제 예제 가 있습니다 . 문서 내의 다른 시트를 참조해도 완벽하게 작동합니다.OrzamentosI5


답변

요약:

=INDEX( FILTER( G2:G , NOT(ISBLANK(G2:G))) , COUNTA(G2:G) )

세부:

나는 여러 가지 답변을 검토하고 시도했으며 여기에 내가 찾은 것이 있습니다. 가장 간단한 솔루션 ( Dohmoose의 답변 참조 )은 공백이 없으면 작동합니다.

=INDEX(G2:G; COUNT(G2:G))

공백이 있으면 실패합니다.

에서 COUNT로 변경하여 하나의 공백을 처리 할 수 ​​있습니다 COUNTA ( user3280071의 답변 참조 ).

=INDEX(G2:G; COUNTA(G2:G))

그러나 일부 공백 조합에서는 실패합니다. ( 1 blank 1 blank 1나를 위해 실패합니다.)

다음 코드가 작동합니다 ( Nader의 답변jason의 의견 참조 ).

=INDEX( FILTER( G2:G , NOT(ISBLANK(G2:G))) , ROWS( FILTER( G2:G , NOT(ISBLANK(G2:G)) ) ) )

그러나 그것은 당신이 사용할 COLUMNS것인지 또는 ROWS주어진 범위에 대해 생각할 필요가 있습니다 .

그러나 COLUMNS로 대체 되면 COUNT신뢰할 수 있고 공백이없는 구현을 얻는 것 같습니다 LAST.

=INDEX( FILTER( G2:G , NOT(ISBLANK(G2:G))) , COUNT( FILTER( G2:G , NOT(ISBLANK(G2:G)) ) ) ) 

그리고 이후 COUNTA에 내장 된 필터가, 우리는 사용하여 더욱 단순화 할 수 있습니다

=INDEX( FILTER( G2:G , NOT(ISBLANK(G2:G))) , COUNTA(G2:G) )

이것은 다소 간단하고 정확합니다. 그리고 행 또는 열을 계산할지 여부에 대해 걱정할 필요가 없습니다. 스크립트 솔루션과 달리 스프레드 시트가 변경되면 자동으로 업데이트됩니다.

행의 마지막 값을 얻으려면 데이터 범위를 변경하십시오.

=INDEX( FILTER( A2:2 , NOT(ISBLANK(A2:2))) , COUNTA(A2:2) )


답변

텍스트 값 열에서 마지막 값을 반환하려면 COUNTA를 사용해야하므로 다음 공식이 필요합니다.

=INDEX(G2:G; COUNTA(G2:G))


답변

이 시도:
=INDIRECT("B"&arrayformula(max((B3:B<>"")*row(B3:B))))

마지막 값을 찾고있는 열이 B라고 가정합니다.

그리고 예, 그것은 공백으로 작동합니다.