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


140

나는 다음 기능을 사용한다

=DAYS360(A2, A35)

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

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


답변:


172

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

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

=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 ) ) ) ) ))

1
나는 그것이 매력처럼 작동하는 한이 경우 웅변에 대해 실제로 신경 쓰지 않습니다. 많은 Sam 감사합니다!
MichaelS

4
빈 모양의 셀을 처리하는 ISBLANK를 사용하지 않고 빈 문자열과 비교하는 결과를 얻었습니다 (예 : = ""와 같은 공백 반환 수식은 공백이 아닌 것으로 간주합니다). <> ""), rows (filter (A : A, A : A <> "")) '
circlepi314

또한 수식 때문에 ISBLANK에 문제가있었습니다. 그러나 = INDEX (FILTER (F3 : F; F3 : F <> "")) 사용; ROWS (FILTER (F3 : F; F3 : F <> "")) 결과 수식 구문 분석 오류가 발생했습니다. 어떤 생각이 잘못 되었습니까?
klor

질문. A : A 대신 importrange ()가있는 경우 동일한 importrange ()를 4 번하지 않고 어떻게 다시 작성할 수 있습니까?
Ruby

4
Doug Bradshaw의 공백도 처리하는 약간 단순화 된 답변 : =INDEX(FILTER(A1:A,NOT(ISBLANK(A1:A))),COUNTA(A1:A))(행 A1을 변경할 수 있음) 전체 설명 : stackoverflow.com/a/27623407/539149
Zack Morris

82

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

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

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


1
이것은 더 간단하고 이것을 테스트했습니다. 잘 작동합니다.
Ciaran

24
귀하의 방법은 값이 숫자 인 경우 마지막 셀만 찾는 것처럼 보이고, 내 방법은 문자열 유형 인 경우 마지막 행을 찾습니다. 원래 질문은 날짜에 관한 것이 었으므로 이것이 효과가 있지만 기사가 여전히 주목을 받으면 차이를 주목할 가치가 있습니다. 그것은 모두 당신의 필요에 달려 있습니다. 숫자 만 필요하면이 방법을 권장합니다.
Sam Plus Plus

1
이것은 열이 정렬되어 있다고 가정합니다
Andrej Adamenko

또한으로 수행 될 수=DAYS360(A2;VLOOKUP(99^99;A:A;1))
vstepaniuk

56

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

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

9
개인적으로 나는 이것이 받아 들여야 할 답변이라고 생각합니다. 간결하고 간단합니다.
SwampThingTom

4
이것이 가장 정확한 답변입니다. 위의 @Poul의 대답 이이 경우에는 효과가 있지만 실제 데이터가있는 실제 마지막 셀을 찾고 싶었습니다. 데이터의 순서에 관계없이 얻습니다.
Chuck Claunch

4
이것은 완벽 해요. 두 번째로 그것이 받아 들여 져야하는 동의입니다.
shiri

37

내가 가장 좋아하는 것은 :

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

따라서 OP의 필요에 따라 :

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

... Poul 위에 게시 된 "MAX"는 마지막 날짜가 항상 최신 인 경우보다 깔끔합니다.
Eric Smalling 2016 년

1
그는 +1이 아니라 1을 의미했습니다
Newbrict

1
이것은 질문에 대한 답이 아니며 마지막 값을 선택하지만 마지막이 아닌 값은 선택하지 않습니다.
네이트

17

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

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

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

3
천재! 간단하고 효과적입니다.
Asu September

14

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

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의 답변 을 먼저 썼으므로 여기에 설명하십시오.


1
나는 이것을 좋아하지만 때로는 마지막 항목 대신 마지막 항목을 반환하는 문제를 보았습니다.
Eric Smalling 2016 년

1
@EricSmalling은 모든 행의 끝에 하나의 추가 줄 바꿈이 있고 복사하여 붙여 넣을 때 비어 있지 않은 셀로 간주 될 수 있습니다. 이 문제를 노출시키는 샘플 스프레드 시트가 있습니까?
Ramazan Polat

가장 똑똑한 솔루션처럼 보입니다!
MemLeak

작동하지 않습니다. btw에서 견적을 어디서 얻었습니까? 나는 구글 시트 문서에서 생각했다.
Atul

1
@RamazanPolat : 영업 이익은 요구하고 열에서 비어 있지 않은 마지막 셀을 찾기 위해 (Google 시트에서) 방법을 A1:A 나에게 열 A에서 비어 있지 않은 마지막 셀 값을 제공하지 않습니다
아툴

8

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

=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();

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

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


1
"알 수없는 기능 LASTROW"
Berit Larsen

실제로 질문 제목이 응답에 대한 100을해야합니다 마지막 행, 마지막 행의 값이 아닌
노르 베르트 반 Nobelen

6

마지막 값을 얻기위한이 공식은 어떻습니까?

=index(G:G;max((G:G<>"")*row(G:G)))

그리고 이것은 원래 작업의 최종 공식입니다.

=DAYS360(G10;index(G:G;max((G:G<>"")*row(G:G))))

초기 날짜가 G10이라고 가정하십시오.


5

나는 다른 길을 갔다. 열 / 열에 하나씩 무언가를 추가 할 것이라는 것을 알고 있기 때문에 먼저 데이터가있는 필드를 계산하여 마지막 행을 찾습니다. 나는 이것을 열로 보여줄 것이다 :

=COUNT(A5:A34)

A5는 4 행 아래이므로 4 번째 행에서 21 번째 위치를 가져와야합니다. 다음과 같이 부정확하게 사용 하여이 작업을 수행 할 수 있습니다.

=INDIRECT("A"&COUNT(A5:A34)+4)

데이터가있는 행의 양을 찾고 색인 수정 자로 사용하는 숫자를 반환합니다.


1
빈 셀은있을 수 없습니다. 또한, COUNTA 더 시나리오에 맞게해야
Z. Khullah에게

4

행 :

=ARRAYFORMULA(INDIRECT("A"&MAX(IF(A:A<>"", ROW(A:A), ))))

열의 경우 :

=ARRAYFORMULA(INDIRECT(ADDRESS(1, MAX(IF(1:1<>"", COLUMN(1:1), )), 4)))

1
훌륭한 답변입니다. 감사합니다.
Nick

2

이것은 계속 확장되는 열에서 마지막 값을 검색하는 가장 간단한 솔루션처럼 보입니다.

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

2

이것은 나를 위해 작동합니다. Google 시트에서 열 A의 마지막 값을 가져옵니다.

=index(A:A,max(row(A:A)*(A:A<>"")))

(또한 존재하는 경우 빈 행을 건너 뜁니다)


1

A 열의 최신 날짜와 A2 셀의 날짜의 차이를 계산하십시오.

=MAX(A2:A)-A2

1

마지막 셀의 내용이 표시됩니다.

=indirect("A"&max(ARRAYFORMULA(row(a:a)*--(a:a<>""))))

이것은 마지막 셀의 주소를 줄 것이다 :

="A"&max(ARRAYFORMULA(row(a:a)*--(a:a<>"")))

이것은 마지막 셀의 행을 제공합니다 :

=max(ARRAYFORMULA(row(a:a)*--(a:a<>"")))

아마도 당신은 스크립트를 선호 할 것입니다. 이 스크립트는 다른 사람이 위에 게시 한 거대한 스크립트보다 훨씬 짧습니다.

스크립트 편집기로 이동하여이 스크립트를 저장하십시오.

function getLastRow(range){
  while(range.length>0 && range[range.length-1][0]=='') range.pop();
  return range.length;
}

하나는 셀에 이것을 입력하면됩니다.

=getLastRow(A:A)

0

아마추어가하는 방식은 "= CONCATENATE ("A ", COUNTUNIQUE (A1 : A9999))"입니다. 여기서 A1은 열의 첫 번째 셀이며 A9999는 항목이있을 것으로 예상되는 것보다 해당 열보다 훨씬 아래쪽에 있습니다. 이 결과 A #은 필요에 따라 INDIRECT 기능과 함께 사용할 수 있습니다.


죄송합니다. 열의 모든 항목이 고유 한 경우에만 작동합니다.
콘래드 린드

1
Conrad, StackOverflow에 대한 귀하의 기여에 감사 드리지만 귀하의 답변에는 몇 가지 문제가 있습니다. 먼저 날짜를 고유하게 지정하지 않았으므로 countunique () 대신 count ()를 사용해야합니다. 둘째, indirect () 및 concatenate를 사용하면 다른 답변에서 볼 수 있듯이 index ()의 기존 기능이 복제됩니다. 셋째, A1 : A9999 대신 왜 A1 : A를 사용하지 않습니까?
sondra.kinsey

0

비어 있지 않은 마지막 행 번호를 찾으려면 (열 사이에 공백을 허용) 아래에서 column을 검색하는 데 사용했습니다 A.

=ArrayFormula(IFNA(match(2,1/(A:A<>""))))
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.