2017-03-07 4 views
0

spreadsheet-image showing lookup-formula사용 조회 - 공식 나는 열의 모든 셀 (= 독일어 sverweis)에 대한 <code>VLookup</code> 공식을 사용하려면

. VLookup 범위는 항상 동일하게 유지되지만 값 (m3, m4, m5)은 모든 셀에서 변경되어야합니다.

양식을 사용하기 때문에 새 레코드가 항상 들어 있으므로 수식을 끌면 좋습니다. 수식은 열 N의 모든 셀에서 실행 중입니다.

배열 수식을 사용해 보았지만 어떻게 든 고생했습니다.

이 문제를 해결하는 방법을 알고 계십니까? 미리 감사드립니다!

+2

새 레코드가 나타나면 수식이 자동으로 아래로 끌리도록 범위를 목록 (삽입 - 테이블)으로 바꿉니 까? – GSerg

+0

그게 내 답변이지만 그는 구글 시트를 사용하는 것 같습니다. 양식을 제출할 때 편집 링크를 시트에 넣는 스크립트가 있는데 동시에 두 개의 수식을 추가하도록 수정했습니다. 내가 그것을 찾을 수 있는지 보자. – Gordon

답변

0

편집 링크를 양식 응답 시트에 넣는 스크립트를 사용하여 속임수를 사용합니다. 아래쪽에 2 개의 셀을 추가하는 몇 가지 간단한 수식을 추가했습니다. sheet.getRange(i+1, columnIndex+2).setValue('=B'+intRow+'+C'+intRow); 여기에 vlookup 수식을 넣을 수 있습니다.

양식의 URL에서 긴 양식 ID로 YOUR-FORM-ID를 변경해야합니다. 나는 사용자가 양식을 마주 쳤을 때 Google이 귀하의 ID를 숨기므로 양식 편집기로 가서 거기에서 ID를 복사해야하므로이 문제가 발생했습니다.

또한 코드의 시트 이름을 사용자의 것과 일치하도록 변경해야합니다.

// Form URL 
var formURL = 'https://docs.google.com/forms/d/YOUR-FORM-ID/viewform'; 
// Sheet name used as destination of the form responses 
var sheetName = 'Form Responses 1'; 
/* 
* Name of the column to be used to hold the response edit URLs 
* It should match exactly the header of the related column, 
* otherwise it will do nothing. 
*/ 
var columnName = 'Edit Url' ; 
// Responses starting row 
var startRow = 2; 

function getEditResponseUrls(){ 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName); 
    var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues(); 
    var columnIndex = headers[0].indexOf(columnName); 
    var data = sheet.getDataRange().getValues(); 
    var form = FormApp.openByUrl(formURL); 
    for(var i = startRow-1; i < data.length; i++) { 
    if(data[i][0] != '' && data[i][columnIndex] == '') { 
     var timestamp = data[i][0]; 
     var formSubmitted = form.getResponses(timestamp); 
     if(formSubmitted.length < 1) continue; 
     var editResponseUrl = formSubmitted[0].getEditResponseUrl(); 
     Var intRow = i + 1 
     sheet.getRange(i+1, columnIndex+1).setValue(editResponseUrl); 
     sheet.getRange(i+1, columnIndex+2).setValue('=B'+intRow+'+C'+intRow); 
     sheet.getRange(i+1, columnIndex+3).setValue('=H'+intRow+'+E'+intRow); 
    } 
    } 
} 

스크립트 편집기에 익숙하지 않은 경우 도구 및 스크립트 편집기를 클릭 한 다음이 코드에있는 코드를 바꾸십시오.

+0

안녕하세요, 고든, 와우, 당신은 내 챔피언입니다! 고마워요! 나는 확인하고 돌아올거야! –

+0

방금 ​​업데이트 할 올바른 열을 자동으로 찾기 위해 코드에서 columnName이라는 변수를 사용하는 것으로 나타났습니다. 당신은 그것을 이메일로 바꿀 수 있고, editResponseUrl이있는 곳에 당신의 vlookup을 놓을 수 있습니다. – Gordon