[google-sheets] Google 스프레드 시트의 열에서 비어 있지 않은 마지막 셀 가져 오기

나는 다음 기능을 사용한다

=DAYS360(A2, A35)

내 열에서 두 날짜의 차이를 계산합니다. 그러나 열이 계속 확장되어 현재 스프레드 시트를 업데이트 할 때 ‘A35’를 수동으로 변경해야합니다.

이 열에서 비어 있지 않은 마지막 셀을 찾은 다음 위 함수에서 해당 매개 변수를 동적으로 설정하는 방법이 있습니까 (Google 스프레드 시트)?



답변

더 웅변적인 방법이있을 수 있지만 이것이 내가 생각해 낸 방법입니다.

열에서 마지막으로 채워진 셀을 찾는 기능은 다음과 같습니다.

=INDEX( FILTER( A:A ; NOT( ISBLANK( A:A ) ) ) ; ROWS( FILTER( A:A ; NOT( ISBLANK( A:A ) ) ) ) )

따라서 현재 기능과 결합하면 다음과 같습니다.

=DAYS360(A2,INDEX( FILTER( A:A ; NOT( ISBLANK( A:A ) ) ) ; ROWS( FILTER( A:A ; NOT( ISBLANK( A:A ) ) ) ) ))


답변

비어 있지 않은 마지막 셀을 찾으려면 다음 INDEXMATCH같이 사용 하고 기능 할 수 있습니다 .

=DAYS360(A2; INDEX(A:A; MATCH(99^99;A:A; 1)))

나는 이것이 조금 더 빠르고 쉽다고 생각합니다.


답변

A2 : A에 날짜가 연속적으로 포함되어 있으면 INDEX (A2 : A, COUNT (A2 : A))가 마지막 날짜를 반환합니다. 마지막 공식은

=DAYS360(A2,INDEX(A2:A,COUNT(A2:A)))


답변

내가 가장 좋아하는 것은 :

=INDEX(A2:A,COUNTA(A2:A),1)

따라서 OP의 필요에 따라 :

=DAYS360(A2,INDEX(A2:A,COUNTA(A2:A),1))


답변

필자의 경우처럼 연속적으로 추가 된 날짜만으로 열이 확장 된 경우-MAX 함수 만 사용하여 마지막 날짜를 얻었습니다.

최종 공식은 다음과 같습니다.

=DAYS360(A2; MAX(A2:A))


답변

질문에 이미 답변되었지만 웅변적인 방법이 있습니다.

Use just the column name to denote last non-empty row of that column.

예를 들면 다음과 같습니다.

데이터가 A1:A100있고 A 열에 더 많은 데이터를 추가하고 싶 A1:A105거나 A1:A1234나중에 할 수 있다고 말하면 이 범위를 사용할 수 있습니다.

A1:A

견본

따라서 범위에서 비어 있지 않은 마지막 값을 얻으려면 두 가지 함수를 사용합니다.

  • COUNTA
  • 인덱스

대답은 =INDEX(B3:B,COUNTA(B3:B))입니다.

설명은 다음과 같습니다.

COUNTA(range) 범위 내에서 값의 개수를 반환합니다.이를 사용하여 행 개수를 얻을 수 있습니다.

INDEX(range, row, col)위치의 범위의 값을 리턴 row하고 col( col=1지정되지 않은 경우)

예 :

INDEX(A1:C5,1,1) = A1
INDEX(A1:C5,1) = A1 # implicitly states that col = 1
INDEX(A1:C5,1,2) = A2
INDEX(A1:C5,2,1) = B1
INDEX(A1:C5,2,2) = B2
INDEX(A1:C5,3,1) = C1
INDEX(A1:C5,3,2) = C2

위 그림의 범위는입니다 B3:B. 먼저 범위 B3:B에 몇 개의 값이 있는지 계산합니다 COUNTA(B3:B). 왼쪽 8에는 8 개의 값이 있기 때문에 생성 9되고 오른쪽에는 생성 됩니다. 또한 마지막 값은 범위의 첫 번째 열에 B3:B있으므로 col매개 변수는 INDEX1이어야하고 row매개 변수는COUNTA(B3:B) .

추신 : @bloodymurderlive의 답변 을 먼저 썼으므로 여기에 설명하십시오.


답변

다른 하나는 다음과 같습니다.

=indirect("A"&max(arrayformula(if(A:A<>"",row(A:A),""))))

최종 방정식은 다음과 같습니다.

=DAYS360(A2,indirect("A"&max(arrayformula(if(A:A<>"",row(A:A),"")))))

여기에있는 다른 방정식은 효과가 있지만 행 번호를 쉽게 얻을 수 있기 때문에 이것을 좋아합니다. 더 자주해야합니다. 행 번호는 다음과 같습니다.

=max(arrayformula(if(A:A<>"",row(A:A),"")))

원래 스프레드 시트 문제를 해결하기 위해이 방법을 찾으려고했지만 마지막 항목의 행 번호를 제공하는 유용한 것을 찾을 수 없으므로 누군가에게 도움이되기를 바랍니다.

또한 모든 유형의 데이터에 대해 순서에 관계없이 작동한다는 이점이 있으며 내용이있는 행 사이에 빈 행이있을 수 있으며 “”로 평가되는 수식이있는 셀은 계산하지 않습니다. 반복되는 값을 처리 할 수도 있습니다. 대체로 여기에 max ((G : G <> “”) * row (G : G))를 사용하는 방정식과 매우 유사하지만, 그 후에 행 번호를 조금 더 쉽게 뽑을 수 있습니다. .

또는 시트에 스크립트를 넣으려면이 작업을 많이 계획하면 쉽게 스크립트를 작성할 수 있습니다. 그 scirpt는 다음과 같습니다.

function lastRow(sheet,column) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  if (column == null) {
    if (sheet != null) {
       var sheet = ss.getSheetByName(sheet);
    } else {
      var sheet = ss.getActiveSheet();
    }
    return sheet.getLastRow();
  } else {
    var sheet = ss.getSheetByName(sheet);
    var lastRow = sheet.getLastRow();
    var array = sheet.getRange(column + 1 + ':' + column + lastRow).getValues();
    for (i=0;i<array.length;i++) {
      if (array[i] != '') {
        var final = i + 1;
      }
    }
    if (final != null) {
      return final;
    } else {
      return 0;
    }
  }
}

현재 편집중인 시트와 동일한 시트에서 마지막 행을 원할 경우 다음을 입력하면됩니다.

=LASTROW()

또는 해당 시트의 특정 열 또는 다른 시트의 특정 열의 마지막 행을 원하는 경우 다음을 수행 할 수 있습니다.

=LASTROW("Sheet1","A")

그리고 일반적으로 특정 시트의 마지막 행 :

=LASTROW("Sheet1")

그런 다음 실제 데이터를 얻으려면 간접적으로 사용할 수 있습니다.

=INDIRECT("A"&LASTROW())

또는 마지막 두 리턴 라인에서 위 스크립트를 수정하고 (실제 열에서 실제 값을 얻기 위해 시트와 열을 모두 배치해야하므로 마지막 두 개) 변수를 다음으로 대체 할 수 있습니다.

return sheet.getRange(column + final).getValue();

return sheet.getRange(column + lastRow).getValue();

이 스크립트의 장점 중 하나는 “”로 평가되는 방정식을 포함하려는 경우 선택할 수 있다는 것입니다. 인수가 추가되지 않으면 “”로 평가되는 방정식이 계산되지만 시트와 열을 지정하면 이제 계산됩니다. 또한 스크립트의 변형을 기꺼이 사용하려는 경우 유연성이 많이 있습니다.

아마 과잉이지만 모든 가능합니다.