답변:
더 웅변적인 방법이있을 수 있지만 이것이 내가 생각해 낸 방법입니다.
열에서 마지막으로 채워진 셀을 찾는 기능은 다음과 같습니다.
=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 ) ) ) ) ))
=INDEX(FILTER(A1:A,NOT(ISBLANK(A1:A))),COUNTA(A1:A))
(행 A1을 변경할 수 있음) 전체 설명 : stackoverflow.com/a/27623407/539149
비어 있지 않은 마지막 셀을 찾으려면 다음 INDEX
과 MATCH
같이 사용 하고 기능 할 수 있습니다 .
=DAYS360(A2; INDEX(A:A; MATCH(99^99;A:A; 1)))
나는 이것이 조금 더 빠르고 쉽다고 생각합니다.
=DAYS360(A2;VLOOKUP(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
따라서 범위에서 비어 있지 않은 마지막 값을 얻으려면 두 가지 함수를 사용합니다.
대답은 =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
매개 변수는 INDEX
1이어야하고 row
매개 변수는COUNTA(B3:B)
.
추신 : @bloodymurderlive의 답변 을 먼저 썼으므로 여기에 설명하십시오.
A1:A
나에게 열 A에서 비어 있지 않은 마지막 셀 값을 제공하지 않습니다
다른 하나는 다음과 같습니다.
=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();
이 스크립트의 장점 중 하나는 ""로 평가되는 방정식을 포함하려는 경우 선택할 수 있다는 것입니다. 인수가 추가되지 않으면 ""로 평가되는 방정식이 계산되지만 시트와 열을 지정하면 이제 계산됩니다. 또한 스크립트의 변형을 기꺼이 사용하려는 경우 유연성이 많이 있습니다.
아마 과잉이지만 모든 가능합니다.
나는 다른 길을 갔다. 열 / 열에 하나씩 무언가를 추가 할 것이라는 것을 알고 있기 때문에 먼저 데이터가있는 필드를 계산하여 마지막 행을 찾습니다. 나는 이것을 열로 보여줄 것이다 :
=COUNT(A5:A34)
A5는 4 행 아래이므로 4 번째 행에서 21 번째 위치를 가져와야합니다. 다음과 같이 부정확하게 사용 하여이 작업을 수행 할 수 있습니다.
=INDIRECT("A"&COUNT(A5:A34)+4)
데이터가있는 행의 양을 찾고 색인 수정 자로 사용하는 숫자를 반환합니다.
마지막 셀의 내용이 표시됩니다.
=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)
아마추어가하는 방식은 "= CONCATENATE ("A ", COUNTUNIQUE (A1 : A9999))"입니다. 여기서 A1은 열의 첫 번째 셀이며 A9999는 항목이있을 것으로 예상되는 것보다 해당 열보다 훨씬 아래쪽에 있습니다. 이 결과 A #은 필요에 따라 INDIRECT 기능과 함께 사용할 수 있습니다.