Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 在不同工作簿的范围上计数_Excel_For Loop_External_Countif - Fatal编程技术网

Excel 在不同工作簿的范围上计数

Excel 在不同工作簿的范围上计数,excel,for-loop,external,countif,Excel,For Loop,External,Countif,长期以来,我一直在试图找出这个问题的根源,但没有任何效果 我试图计算另一个工作簿中出现特定文本的实例数(在本例中,实例为“42.1”,工作簿名称将包含在Filename1中)。出于某种原因,当我直接在工作表中执行countif时,它会得到正确的答案(应该是2)。但每当我运行下面的代码时,它都会给我3 所有引用看起来都正常,因为我手动调用了另一个工作簿中的每个值,没有问题。你能帮忙吗 请使用diregard counttiff,它本质上等同于应用程序函数CountIf,我可以互换使用这两个函数

长期以来,我一直在试图找出这个问题的根源,但没有任何效果

我试图计算另一个工作簿中出现特定文本的实例数(在本例中,实例为“42.1”,工作簿名称将包含在Filename1中)。出于某种原因,当我直接在工作表中执行countif时,它会得到正确的答案(应该是2)。但每当我运行下面的代码时,它都会给我3

所有引用看起来都正常,因为我手动调用了另一个工作簿中的每个值,没有问题。你能帮忙吗

请使用diregard counttiff,它本质上等同于应用程序函数CountIf,我可以互换使用这两个函数



函数COUNTIFv(Rin作为范围,条件作为变量)作为长函数与Excel COUNTIF工作表函数相同,只是不计算隐藏在Dim A作为范围Dim Csum的单元格,只要Vis(Rin)中的每个A的长Csum=0。区域Csum=Csum+工作表函数。COUNTIF(A,条件)下一个A COUNTIFv=Csum结束函数Vis(Rin作为范围)As Range'返回Rin的子集,该子集作为范围应用程序显示在Dim单元格中。对于Rin中的每个单元格,Volatile Set Vis=Nothing如果不是(Cell.EntireRow.Hidden或Cell.entireclumn.Hidden),则如果Vis为Nothing,则设置Vis=Cell,否则设置Vis=Union(Vis,Cell)End If End如果End如果End是下一个单元格End函数这是模块3。。。它包含这两个函数。它们不具有高度相关性,因为它们不会影响答案。函数COUNTIFv(Rin作为范围,条件作为变量)与Excel COUNTIF工作表函数相同,只是不计算隐藏在Dim A作为范围Dim Csum的单元格,只要Vis(Rin)中的每个A的Csum=0。区域Csum=Csum+工作表函数。COUNTIF(A,条件)接下来,COUNTIFv=Csum End function function Vis(Rin As Range)As Range'返回Rin的子集,该子集作为范围应用程序在Dim单元格中可见。如果Rin中的每个单元格不可见(Cell.EntireRow.Hidden或Cell.entireclumn.Hidden),则如果Vis为Nothing,则设置Vis=Cell,否则设置Vis=Union(Vis,Cell)结束如果结束如果下一个单元格结束功能这是模块3。。。它包含这两个函数。由于它们不影响答案,因此相关性不高。
'manually define the latest S&OP input file
filename = Application.GetOpenFilename
Shapes("DisplayFilename").TextFrame.Characters.Text = filename

'activate the S&OP Workbook
Filename1 = Split(filename, "\")(UBound(Split(filename, "\")))
Workbooks.Open (Filename1)
Workbooks(Filename1).Activate

'define the correct S&OP worksheet regardless of the date
For Each ws_mould In ActiveWorkbook.Worksheets
    If ws_mould.Name Like "*Mould*" Then
        Worksheets(ws_mould.Name).Activate
        active_ws = ws_mould.Name
    End If
Next ws_mould

Workbooks(Filename1).Activate
Set CellRange = Workbooks(Filename1).Worksheets(active_ws).Range(Worksheets(active_ws).Cells(27, 45), Worksheets(active_ws).Cells(53, 45))
'NumBlades = Application.WorksheetFunction.CountA(CellRange)
NumBlades = Module3.COUNTIFv(CellRange, "??42.1#*")
Shapes("DisplayFilename").TextFrame.Characters.Text = active_ws