这是我在这里的第一篇文章,所以大家好 我事先做了很多研究,但找不到我想要的答案。
我想在Google表格中电子表格自动计算我的税。
<0>€0 - €11000 w / 0%因此,前11k的税率为0%,接下来的7k税率为25%等。
我有以下想法 - 给我F9是我之前的税收收入:
=IF(0<=F9<=11000,SUM(F9*0%),(IF(11000<F9<=18000,SUM((F9-11000)*25%),(IF(18000<F9<=31000,SUM((7000*25%)+((F9-18000)*35%),SUM(F9))))))
不幸的是它只是赢了工作。
我使用的是正确的功能吗? 那里有什么能让它变得更容易吗?
感谢您的帮助。
答案 0 :(得分:0)
Excel不会以X<y<z
的方式工作。此外,它按顺序解决,因此没有必要:
=IF(F9<=11000,SUM(F9*0%),(IF(F9<=18000,SUM((F9-11000)*25%),(IF(F9<=31000,SUM((7000*25%)+((F9-18000)*35%),SUM(F9))))))
如果它小于11000那么第一个将开火而没有其他人。然后,如果大于11000但小于18000,那么第二个将开火,依此类推。
答案 1 :(得分:0)
以下是您的问题的示例(Excel):
在单元格A1中是您的Money,将代码粘贴到A2中,例如:
=WENN(A1>10000;"10%";WENN(A1>7000;"7%";WENN(A1>5000;"5%";WENN(A1>3000;"3%";"0%"))))
FK
答案 2 :(得分:0)
列出每个括号范围的值,如果它高于该数量,则应用百分比,例如:
=MATCH(F9;A1:A6;1)
如果您愿意,可以将百分比值格式化为百分比。重要的是该值是小数而不是字符串。
然后您可以使用MATCH函数来确定第一个值大于您收入的行。因此,如果持有您收入的单元格是F9,那么您将拥有:
=INDEX(B1:B6; MATCH(F9; A1:A6; 1); 1)
但这只返回行号。如果我们想要检索所应用的税,我们需要使用它来查明B列中与之相关的值。要动态获取某个特定点的值,我们使用INDEX。
所以把它放在一起,你就有了:
=F9*(1 - INDEX(B1:B6; MATCH(F9; A1:A6; 1); 1))
一次减去F9中的值以获得税后金额:
Dim objMyConn As ADODB.Connection
Dim objMyCmd As ADODB.Command
Dim objMyCmd1 As ADODB.Command
Dim objMyRecordset As ADODB.Recordset
Dim rngUsedRange
Set objMyConn = New ADODB.Connection
Set objMyCmd = New ADODB.Command
Set objMyRecordset = New ADODB.Recordset
Set rngUsedRange = ActiveSheet.UsedRange
'Open Connection'
objMyConn.ConnectionString = "Provider=SQLOLEDB;Data Source=10.5.3.16;Initial Catalog=PROTELECOM_AMERICAN_TOWERS;Trusted_connection=yes;"
objMyConn.Open
'Set and Excecute SQL Command'
Set objMyCmd.ActiveConnection = objMyConn
objMyCmd.CommandText = ";WITH CTE AS(SELECT BAN.BAN_IDFR, BAN.BAN_NBR, BAN.BAN_STATUS FROM PROTELE_BAN BAN INNER JOIN PROTELE_BILL BILL ON BAN.BAN_IDFR = BILL.BAN_IDFR" & _
"GROUP BY BAN.BAN_IDFR,BAN.BAN_NBR,BAN.BAN_STATUS)SELECT DISTINCT V.ORG_NAME [VENDOR NAME], CTE.BAN_NBR [BAN#], SVR.SER_ACCT_NBR [WTN#],W.COST_CENTER[COST CENTER],W.COST_CODE[COST CODE], BA.ECOM_ID [VENDOR ID],BC.SERVICE_TYPE [SERVICE TYPE], CONVERT(VARCHAR(10),MAX(B.BILL_DATE),101) AS [BILL DATE],SUM(BC.AMOUNT) AMOUNT, B.EXTRACT_STATUS [EXTRACT STATUS],CONVERT(VARCHAR(10),B.EXTRACT_DATE,101) AS [EXTRACTED DATE]" & _
"FROM CTE INNER JOIN PROTELE_BILL B ON CTE.BAN_IDFR = B.BAN_IDFR" & _
"INNER JOIN PROTELE_BILL_CHARGE BC ON B.BILL_IDFR = BC.BILL_IDFR" & _
"INNER JOIN PROTELE_BAN_WTN_MAPPING MAPP ON B.BAN_IDFR = MAPP.BAN_IDFR" & _
"INNER JOIN PROTELE_SVR_WTN SVR ON SVR.SVR_ACCT_IDFR=BC.SVR_ACCT_IDFR" & _
"INNER JOIN PROTELE_SVR_WTN_DETAILS W ON CTE.BAN_IDFR = W.BAN_IDFR AND SVR.SVR_ACCT_IDFR = W.SVR_ACCT_IDFR AND B.BAN_IDFR=W.BAN_IDFR" & _
"INNER JOIN PROTELE_BAN_VENDOR BV ON CTE.BAN_IDFR = BV.BAN_IDFR" & _
"INNER JOIN PROTELE_BAN BA ON CTE.BAN_IDFR = BA.BAN_IDFR" & _
"INNER JOIN PROTELE_LOCATION C ON C.LOCA_IDFR = BV.VNDR_LOCA_IDFR" & _
"INNER JOIN PROTELE_VENDOR V ON C.ORG_IDFR = V.ORG_IDFR WHERE BC.SVR_ACCT_IDFR=W.SVR_ACCT_IDFR AND (B.EXTRACT_DATE BETWEEN '02/05/2016' AND '02/06/2016')" & _
"GROUP BY CTE.BAN_NBR, B.EXTRACT_DATE, BA.ECOM_ID,B.BILL_DATE,B.EXTRACT_STATUS,BC.SERVICE_TYPE,W.COST_CENTER,W.COST_CODE, SVR.SER_ACCT_NBR,V.ORG_NAME" & _
"ORDER BY CTE.BAN_NBR, V.ORG_NAME;"
objMyCmd.CommandType = adCmdText
'Open Recordset'
Set objMyRecordset.Source = objMyCmd
objMyRecordset.Open
For intColIndex = 0 To objMyRecordset.Fields.Count - 1
Selection.Offset(0, intColIndex).Value = objMyRecordset.Fields(intColIndex).Name
Next
'Copy Data to Excel'
ActiveSheet.Range("A2").CopyFromRecordset objMyRecordset
你为什么这样做?它允许您以直观的方式更改值,而无需解析冗长而艰巨的公式。您还可以相对轻松地添加新值。请记住调整A1:A6和B1:B6范围。
祝你好运!让我知道结果如何!答案 3 :(得分:0)
您可能想尝试一下:
=if(F9<=0,"Error",IF(F9<=11000,0,(IF(F9<=18000,(F9-11000)*25%,(IF(F9<=31000,1750+(F9-18000)*35%,IF(F9<=60000,6300+(F9-31000)*0.42,if(F9<=90000,18480+(F9-60000)*0.48,IF(F9<=1000000,32880+(F9-90000)*0.5,487880+(F9-1000000)*0.55)))))))))