>source

첫째 : 저는 정말 잘 지내려고 노력했지만 프로그래머 라기보다는 서포터입니다.

Google 캘크에 텍스트를 입력하고 "Mueller, Klaus"의 발생량을 확인하고 싶었습니다 (데이터 범위 내에서 5 번 나타남). 시트에는 941 개의 행과 1 개의 열 ( "A")이 있습니다.

내 코드는 다음과 같습니다.

function countKlaus() {
  
  // Aktives Spreadsheet auswählen
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  
  
  // Aktives Tabellenblatt auswählen
  var sheet = ss.getSheetByName("Tabellenblatt1");
  var start = 1;
  var end = sheet.getLastRow();
  var data = sheet.getRange(start,1,end,1).getValues();
  var curRow = start;
  var cntKlaus = 0;
  
  for( x in data )
  {
    var value = daten[x];
    //ui.alert(value);
    if(value.indexOf("Mueller, Klaus")> -1){
      cntKlaus = cntKlaus + 1;
    }
  }
 
  ui.alert(cntKlaus);
  
}

결과 메시지는 "0"이지만 "5"여야합니다.


  • 답변 # 1

    문제 :

    다음 두 가지 문제를 제외하고는 솔루션에 매우 가깝습니다.

    daten[x] 대체해야합니다 data[x] .

    ui.alert(cntKlaus) 대체해야합니다 SpreadsheetApp.getUi().alert(cntKlaus) .

    솔루션 (내가 최적화)-권장 :
    function countKlaus() {
      const ss = SpreadsheetApp.getActiveSpreadsheet();
      const sheet = ss.getSheetByName("Tabellenblatt1");
      const cntKlaus = sheet
                       .getRange('A1:A' + sheet.getLastRow())
                       .getValues()
                       .flat()
                       .filter(r=>r.includes("Mueller, Klaus"))
                       .length;
      SpreadsheetApp.getUi().alert(cntKlaus);
    }
    
    

    이 용어는 생략 할 수 있습니다. + sheet.getLastRow() 공백이 아닌 값을 필터링하고 있기 때문입니다. 하지만 애초에 필터를 사용할 데이터가 적을수록 더 빠를 것이라고 생각합니다.

    참조 :

    flat : 2D 배열을 1D 배열로 변환합니다.

    필터 : 필터 만 사용 "Mueller, Klaus" .

    Array.prototype.length : 필터링 된 데이터의 길이 가져 오기 원하는 결과입니다.

    포함 : 확인 Mueller, Klaus 텍스트에 포함되어 있습니다.

    보너스 정보

    정보를 위해 내 솔루션이 중요한 경우 한 줄의 코드로 다시 작성할 수 있습니다.

    SpreadsheetApp.getUi().alert(SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Tabellenblatt1").getRange('A1:A').getValues().flat().filter(r=>r.includes("Mueller, Klaus")).length);
    
    

관련 자료

  • 이전 qml - ID 부분 별 QT QSS 선택기
  • 다음 springdata neo4j 6 - findall () 작업이 관계를 제대로 매핑하지 않습니다