如何在Google表格上整理数据库

时间:2017-12-19 02:42:52

标签: google-apps-script google-sheets

我正在尝试将数据从一张纸组织成几张不同的纸张,例如,如果在我的原始数据表中我有四个人喜欢他们喜欢的食物:

1 | Rice
2 | Pasta
3 | Rice
4 | Cheese

有没有办法对这张纸进行整理,并让所有像米饭一样的人出现在第二张纸上。像“Rice”这样的东西看起来像:

1 | Rice
3 | Rice

基本上尝试进行查找或索引匹配,可以跳过“Pasta”或“Cheese”,而不会在“Rice”表中留下空行。

2 个答案:

答案 0 :(得分:0)

我会给你一些开始的东西:

我在这里Sheet2function main(){ var sheet = SpreadsheetApp.openById("YOUR_SPREADSHEET_ID"); var ctr = 1; var sheetRange ="" ; var myActiveSheet = ""; var my2DArray = getValue("rawSheet!A1:B9"); if(my2DArray){ for( var i =0; i<my2DArray.length; i++){ if(my2DArray[i][1] == "Rice"){ Logger.log((my2DArray[i][0])); //ctr will ensure the new values don't overwrite the previous values sheetRange = 'A'+ctr; //activate the sheet which will contain the 'filtered list' sheet.setActiveSheet(sheet.getSheets()[2]).getRange(sheetRange).setValue(my2DArray[i][0]); //make sure the new values don't overwrite the previous values so increment it (row1, row2, row3, etc) ctr++; } } } } //this function will fetch the values from the raw list function getValue(a1notationString) { var sheet = SpreadsheetApp.openById("YOUR_SPREADSHEET_ID"); var data = sheet.getRange(a1notationString).getValues(); return data; } 。 Sheet1包含原始列表,Sheet2将填充过滤后的值。

这是我的代码:

$headers='Content-Type: text/html; charset="UTF-8"';
                      $from = 'UCVOGUE';
                      $subject = 'Order Confirmation from UCVOGUE';
                      $message = '<html>
                      <body>
                      <div class="col-md-12 email-box">
          <div class="row">
            <div class="col-md-2">
              <img src="images/clogo.png" width="50%" class="center-block">
            </div>
            <div class="col-md-8">
              <center><h2>Greetings from Ucvogue</h2></center>
            </div>
            <div class="col-md-2">
              <center><h3>Order No:12501468</h3></center>
            </div>
          </div><hr>
        </div>
        <div class="row">
            <div class="col-md-12">
              <table class="table table-bordered">
                <thead>
                  <tr>
                    <td>Custome:name</td>
                    <td>Product</td>
                    <td>Cost</td>
                    <td>Units</td>
                    <td>Total Cost</td>
                    <td>Address:</td>
                  </tr>
                </thead>
                <tbody>
                  <tr>
                    <td><?php echo $o_cu_name;?></td>
                    <td><?php echo $o_pro_name;?></td>
                    <td><?php echo $o_pro_cost;?></td>
                    <td><?php echo $o_qty;?></td>
                    <td><?php echo $o_cost;?></td>
                    <td><?php echo $o_cu_address;?></td>
                  </tr>
                </tbody>
              </table>
            </div>
          </div>
          </body>
          </html>
          ';
                      mail($to,$subject,$message,$headers);

这是 rawSheet (表1 / sheet.getSheets()[1]):

BoltClock's answer

这是 filteredSheet (表2 / sheet.getSheets()[2]):

enter image description here

您会注意到所有吃米饭的名字都被移到 filteredSheet

有关详细信息,请熟悉enter image description here

答案 1 :(得分:0)

你听说过VLOOKUP()吗?这允许您搜索范围并根据匹配列从列中提取值。

来自Google Sheets vlookup(https://www.ablebits.com/office-addins-blog/2017/07/05/vlookup-google-sheets-example/)的第一个Google搜索结果之一:

Google表格VLOOKUP功能的语法如下:

VLOOKUP(search_key,range,index,[is_sorted]) 前3个参数是必需的,最后一个是可选的:

Search_key - 是要搜索的值(查找值或唯一标识符)。例如,您可以搜索单词&#34; apple&#34;,数字10或单元格A2中的值。

范围 - 搜索的两列或更多列数据。 Google表格VLOOKUP函数始终在范围的第一列中搜索。

索引 - 应返回匹配值(与search_key在同一行中的值)的范围内的列号。

范围中的第一列具有索引1.如果index小于1,则Vlookup公式返回#VALUE!错误。如果它大于范围内的列数,VLOOKUP将返回#REF!错误。

Is_sorted - 指示您的Vlookup公式是应该返回最接近的匹配(TRUE)还是完全匹配(FALSE)。

如果is_sorted设置为FALSE,则Vlookup公式将使用完全匹配进行搜索。 如果查找列(范围的第一列)包含2个或更多完全等于search_key的值,则返回找到的第1个值。如果未找到完全匹配,则返回#N / A错误。在大多数情况下,它建议与Vlookup完全匹配。

如果is_sorted为TRUE或省略(默认),则Vlookup公式返回近似匹配。查询列必须按升序排序,即从A到Z或从最小到最大。 具有近似匹配的Vlookup以这种方式工作:公式首先搜索完全匹配。如果未找到完全匹配,则搜索最接近的匹配,该匹配小于或等于search_key。如果查阅列中的所有值都大于搜索键,则返回#N / A错误。