在满足条件时返回单元格引用

时间:2017-08-26 17:45:03

标签: google-apps-script

我有电子表格,上面有学生姓名,年龄和考试成绩。 我想循环通过已从最低到最高排序的第4列(学生年龄)。 循环记录了单元格“D1”中第一个也是最年轻的学生的年龄,但我希望它在学生的年龄比“D1”中的学生年龄大4岁的单元格上时停止循环,例如: 11(单元格“D1”) 11 11 12 12 13 14 15(因为这个学生比单元格“D1”大4岁,我想要它返回“D6”。

然后我想用“D6”(或任何细胞参考将会是)作为初始起点重复这个过程,并在学生年龄超过4岁时将细胞击中细胞时返回细胞。

这是我已经做过的事情。我真的很陌生,所以让我提前道歉!任何帮助都会受到赞赏,因为我真的被卡住了。

    function myFunction() {
  var app = SpreadsheetApp;
  var activeSheet = app.getActiveSpreadsheet().getActiveSheet();
  var firstAge = activeSheet.getRange("D1").getValue()
  var lastRow = activeSheet.getLastRow();

  for(var i=1;i<lastrow+1;i++){
      var column4 = activeSheet.getRange(i, 4).getValue();

          if (column4 === firstAge + 4) {
            activeSheet.getRange().getRowIndex(column4);

3 个答案:

答案 0 :(得分:0)

function my4Loop() 
{
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  var rg=sh.getDataRange();
  var vA=rg.getValues();
  var oA=[];
  var age1=vA[0][3];
  for(var i=1;i<vA.length;i++)
  {
      if(vA[i][3]-age1>=4)
      {
        var a1=sh.getRange(i+1,4);
        oA.push(a1.getA1Notation());
        age1=vA[i][3];
        a1.setBackground('#ffff00');//Mark the wiener
      }
  }
  Logger.log(oA);
return oA;
}

答案 1 :(得分:0)

这可能对您有用:

function getCells(){

var ss = SpreadsheetApp.getActive();
var sheet = ss.getSheetByName(YOUR_SHEET_NAME);
var targetColumn = "D";
var values = sheet.getRange(targetColumn + "1:" + targetColumn + sheet.getLastRow())
                  .getValues();

var cursorAt = values[0];
var result = [];

values.forEach(function(item, index){

    if (item[0] - cursorAt == 4) {

      cursorAt = item[0];
      result.push("D" + (index + 1));
    }

  });  


return result;  


}

答案 2 :(得分:0)

import React from 'react';
import { MapView } from 'expo';
import db from '../db';
import { createRouter, NavigationProvider, StackNavigation } from '@expo/ex-navigation';
import selectedPhototag from '../screens/selectedPhototag';
import { StackNavigator, NavigationActions } from 'react-navigation';

const nav = StackNavigator({
  phototag: {
    screen: selectedPhototag,
  },
});

export default class MapScreen extends React.Component {
  state = {
    markers: [],
  };
  componentWillMount() {
    db.child('phototags').once('value').then(photoTags => {
      let dataArray = [];
      for (var key in photoTags.val()) {
        dataArray.push(photoTags.val()[key]);
      }
      this.setState({ markers: dataArray }, () => {
        // console.log('[MapScreen] data', this.state.markers);
      });
    });
  }

  goTophototags() {
    NavigationActions.navigate({ routeName: nav.phototag });
  }

  render() {
    return (
      <MapView
        provider={MapView.PROVIDER_GOOGLE}
        style={{ flex: 1 }}
        initialRegion={{
          latitude: 40.750355960509054,
          longitude: -73.97669815393424,
          latitudeDelta: 0.0922,
          longitudeDelta: 0.0421,
        }}>
        {this.state.markers.map((marker, i) =>
          <MapView.Marker
            key={i}
            coordinate={{
              latitude: marker.locationLat,
              longitude: marker.locationLong,
            }}
            title={marker.description}
            onPress={this.goTophototags}
          />
        )}
      </MapView>
    );
  }
}