彰化一整天的論壇

 找回密碼
 立即註冊
查看: 942|回復: 9

請問試算表無法加總金額/依行政區有不同的滿額免運

[複製鏈接]
發表於 2021-6-18 09:16:57 | 顯示全部樓層 |閱讀模式
本帖最後由 arcode 於 2021-6-18 09:19 編輯

老師您好,想請問您使用google表單製作訂購單的相關問題,如下:

問題一、在試算表中商品金額欄位(BH2)的計算公式出現陣列未展開,且公式中欄位代號如R2:R和AD2:AD會呈現灰色,無法正常運算,當需加總的商品欄位越多時,公式中出現灰色的代號也越多。

問題二 、 請問依據選擇的行政區有不同的滿額免運條件該如何寫程式呢?(例如:選擇台中市中區要滿499才免運,東區要滿699才免運),且其對應試算表中運費欄位(BI2)的公式又該如何填寫公式?
占用到您的時間,真的很抱歉!還請您幫忙!以下是程式的內容,為節省長度,“產品價格”和“依行政區選項有不同免運門檻”兩部分的程式碼有刪一些掉:

function autoSendmail(data) {
  var subject = "[饗饗市集]訂單確認信", // 信件標題
      emailTitle = "電子郵件", // 表單中填寫收件者信箱的題目名稱
      namedValues = data.namedValues,
      values=data.values,      
      notifyEmail = namedValues[emailTitle] ? namedValues[emailTitle][0]:"" ,
      html = "";

  //設定產品價格
  var price={"有機空心菜(250g/包) 45元 /限量":45,"有機黑葉白菜(250g/包) 45元 /限量":45,"有機鵝白菜(250g/包) 45元 /限量":45,};

  var money=0;

  var free_shopping_money1=499;
  var free_shopping_money2=699;

  var pickup;
  pickup=namedValues["其他地點取貨(選擇行政區)"] ? namedValues["其他地點取貨(選擇行政區)"][0]:"" ;

  var freight_all=0;

  var n=data.values.length;

  var fields="";

  //設定信件內容的順序
  var field=["訂購人姓名","聯絡電話","電子郵件","付款方式","匯款帳戶後5碼",
             "學校單位取貨","其他地點取貨(選擇行政區)","取貨地址",
             "有機空心菜(250g/包) 45元 /限量","有機黑葉白菜(250g/包) 45元 /限量","有機鵝白菜(250g/包) 45元 /限量",
]  

  var d="";

  var i,j;


  for (i = 0; i < n; i++) {
    v= namedValues[field] ? namedValues[field][0]:"" ;
    if(v!="")
    {
      html+=field+":"+v+"<br/>";
      if(price[field]!=undefined)
        money+=price[field]*v;     

     }
  }

  html+="商品金額:"+money+"元<br/>";


  //運費條件
  if(pickup=="台中市中區")
  {
                if(money>=free_shopping_money1)
                {
                freight_all=0;
                }
                else if(money<free_shopping_money1)
                {
                freight_all=80;
                }
  }
  if(pickup=="台中市東區")
  {
                if(money>=free_shopping_money1)
                {
                freight_all=0;
                }
                else if(money<free_shopping_money1)
                {
                freight_all=80;
                }
  }
if(pickup=="台中市南區")
  {
                if(money>=free_shopping_money1)
                {
                freight_all=0;
                }
                else if(money<free_shopping_money1)
                {
                freight_all=80;
                }
  }
  if(pickup=="台中市太平區")
  {
                if(money>=free_shopping_money2)
                {
                freight_all=0;
                }
                else if(money<free_shopping_money2)
                {
                freight_all=20;
                }
  }
  if(pickup=="台中市大里區")
  {
                if(money>=free_shopping_money2)
                {
                freight_all=0;
                }
                else if(money<free_shopping_money2)
                {
                freight_all=20;
                }
  }
  if(pickup=="台中市霧峰區")
  {
                if(money>=free_shopping_money2)
                {
                freight_all=0;
                }
                else if(money<free_shopping_money2)
                {
                freight_all=20;
                }
  }


  money+=freight_all;
  html+="運費:"+freight_all+"元<br/>";

  html+="您的採購總金額:"+money+"元<br/>";

  MailApp.sendEmail({
    to: notifyEmail,
    subject: subject,
    htmlBody: html
  });

  //將採購總金額回填儲存格
  var sheet =SpreadsheetApp.getActiveSheet();
  var LastRow=sheet.getActiveCell().getLastRow();
  sheet.getRange("BH"+LastRow).setValue(money-freight_all);
  sheet.getRange("BI"+LastRow).setValue(freight_all);/
  sheet.getRange("BJ"+LastRow).setValue(money);

}


function test()
{
    var sheet =SpreadsheetApp.getActiveSheet();

    Logger.log(sheet.getSheetValues(1,1,1,1));   

}
function show_field(namedValues)
{
  fields="";
  Object.keys(namedValues).forEach(function(key) {
    if(namedValues[key]!="")
    {
      fields+="["+key+"]:["+namedValues[key]+"]\n";
    }

  });  
  Logger.log(fields);

}

試算表問題.png

2021完成表單.xlsx

503.71 KB, 下載次數: 177

回復

使用道具 舉報

發表於 2021-6-18 09:50:07 | 顯示全部樓層
下次張貼程式嗎請參考底下這篇.
如何在discuz張貼程式碼
http://discuz.bestdaylong.com/thread-30239-1-1.html
回復 支持 反對

使用道具 舉報

發表於 2021-6-18 09:55:41 | 顯示全部樓層
先回答.
問題一:
若您之前的就下過陣列公式,要先之前的公式先清除,因為它會自動往下複製,若後面有資料存在.就會出現'陣列未展開"
回復 支持 反對

使用道具 舉報

 樓主| 發表於 2021-6-18 11:24:25 | 顯示全部樓層
感謝您的回覆,下次我會注意張貼規範的.
關於陣列公式我有清除過後重打,仍然有這樣的問題,也有遇過打出來右邊的所有欄列位全部出現0或是出現附上的圖片的狀況。
目前我把欄位的公式都清除,使用將金額回傳到表單欄位的方法來解決。
陣列公式問題.png
回復 支持 反對

使用道具 舉報

發表於 2021-6-18 11:28:21 | 顯示全部樓層
arcode 發表於 2021-6-18 11:24
感謝您的回覆,下次我會注意張貼規範的.
關於陣列公式我有清除過後重打,仍然有這樣的問題,也有遇過打出來 ...

您用試測資料分享試算表出來,我要看公式才會知道您錯在那里。
回復 支持 反對

使用道具 舉報

 樓主| 發表於 2021-6-18 12:28:39 | 顯示全部樓層
下面是試算表的分享連結,填寫表單後資料沒辦法運算出來,呈現空白狀態,麻煩您查看,謝謝!
https://docs.google.com/spreadsh ... Pc/edit?usp=sharing
回復 支持 反對

使用道具 舉報

發表於 2021-6-18 14:06:13 | 顯示全部樓層
arcode 發表於 2021-6-18 12:28
下面是試算表的分享連結,填寫表單後資料沒辦法運算出來,呈現空白狀態,麻煩您查看,謝謝!
https://docs. ...

您都已經在程式中寫回購買金額就不要在用陣列公式算,陣列公式適用在少資料,資料大就用程式去解決。
回復 支持 反對

使用道具 舉報

 樓主| 發表於 2021-6-18 14:43:55 | 顯示全部樓層
了解,感謝老師的回覆。關於問題二再請您幫我看如何解決,謝謝!
回復 支持 反對

使用道具 舉報

發表於 2021-6-19 14:35:56 | 顯示全部樓層
本帖最後由 imingho 於 2021-6-19 22:28 編輯
arcode 發表於 2021-6-18 14:43
了解,感謝老師的回覆。關於問題二再請您幫我看如何解決,謝謝!

若只是一個二個條件。
您可以參考.
http://wordpress.bestdaylong.com/blog/archives/53251
使用一層或是二層IF的陣列公式來解決。若是多個可以vlookup陣列,底下連結有範例.
https://docs.google.com/spreadsh ... KQ/edit?usp=sharing
  1. =ARRAYFORMULA(if(A2:A10="","",if(A2:A10<vlookup(B2:B10,'工作表2'!$A$1:$B$4,2,0),A2:A10+C2:C10,A2:A10)))
複製代碼
可以參考底下這篇教學
【試算表教學】如何在陣列公式arrayformula中使用vlookup查不...
http://discuz.bestdaylong.com/thread-39305-1-1.html



回復 支持 反對

使用道具 舉報

 樓主| 發表於 2021-6-21 19:27:35 | 顯示全部樓層
謝謝老師解決我的問題,教學影片講解的很清楚,非常感謝!
回復 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

Archiver|手機版|小黑屋|彰化一整天的論壇(Excel,Office)

GMT+8, 2021-9-21 15:43 , Processed in 0.112353 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回復 返回頂部 返回列表