나는 다음 기능을 사용한다
=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 ) ) ) ) ))
답변
비어 있지 않은 마지막 셀을 찾으려면 다음 INDEX
과 MATCH
같이 사용 하고 기능 할 수 있습니다 .
=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
매개 변수는 INDEX
1이어야하고 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();
이 스크립트의 장점 중 하나는 “”로 평가되는 방정식을 포함하려는 경우 선택할 수 있다는 것입니다. 인수가 추가되지 않으면 “”로 평가되는 방정식이 계산되지만 시트와 열을 지정하면 이제 계산됩니다. 또한 스크립트의 변형을 기꺼이 사용하려는 경우 유연성이 많이 있습니다.
아마 과잉이지만 모든 가능합니다.