我有20列数据,其中有一个摊销公式。
我需要检查摊销是否符合两个标准。
基于第15行的split
,我需要检查两个项(项引用第1行)是否都声明它们是include(第3行),以及两个项是否具有相同的值(第13行)。
现在,分裂可以是项目1、2、4或1、2或1、5等,基于用户输入的任何组合。
如果不包括,则在第18行注明“”,并注明“检查”。
我知道如何使用if函数,但不是基于split。
我知道如何通过这里收到的指导将拆分作为函数的一部分,但我不能解决如何将IF添加到函数中。
我的函数在第13行和第16行函数问题中使用
我的尝试:
Function checkIf(sItemIDX As String, cCostToAmortize As Currency, Optional lItemRow As Long = 1) As String
Dim v
Dim P As Currency
Application.Volatile
For Each v In Split(sItemIDX, ",")
'Assuming Item List starts in column B
' But could use other methods to locate table
P = P + Cells(lItemRow + 1, v + 1)
Next v
checkIf = IF(cCostToAmortize = Cells(lItemRow + 1, Application.Caller.Column) then IF(cCostToAmortize = Cells(lItemRow + 1, Application.Caller.Column) Then "" Else "Check"
End If
End Function
我希望结果看起来如何(颜色是为了更容易解释)。
在第18行,我想做一个检查,在我的脑海中,这将在以下步骤中完成。
1.拆分第15行,第15行中的每个数字代表项目(第1行)。在最终工作表中,第15行的任何单元格中可能有20个数字。
1.根据这些数字,将完成If语句以检查包含的选项(第3行),如果输入到第15行,则所有选项都应为yes,示例B15表示第1项和第2项,因此第3行的第1项(b)和第2项(c)都应为yes。由于情况并非如此,它应在第18行的B列和C列返回“Check”。
1.下一阶段,如果这两个值都为“是”,如第4(e)项和第5(f)项所示,则检查以确保要摊销的工具成本与第13行的值相同。在本例中,这两个值不相同(以红色突出显示),因此再次将“检查”置于第18行的E列和F列。
如果在第15行没有任何内容,那么它就可以是“",如果在第3行B列和C列都说是,那么再次使用B列和C列将返回一个“”。
注:在最终版本中,第15行的每个单元格中可以包含1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16、17、18、19、20,这意味着它们都需要进行比较。
要检查的图像。
公式图像
1条答案
按热度按时间wxclj1h51#
如果我正确理解了你想要的,而且你有Excel for Windows 2013+,你可以用工作表函数做到这一点。
例如,要将逗号分隔的数据拆分为单独的数组元素,可以用途:
因此,您的公式可能如下所示:
在下面的屏幕截图中,由于
Item 2 Included
行上的No
而显示“检查”。如果将
C3
更改为Yes
,则第18行中的check
将消失。公式将处理20列数据。如果数据更多(或更少),请相应地更改各个公式中对
Bn:Un
的引用。