在同一工作簿中从一张纸到另一张纸计算功能值

时间:2020-02-08 18:25:56

标签: excel vba function count

这似乎相对简单。我正在尝试获取工作表中列的计数功能的值/结果(下面的代码中为“ MASTER”),并将该值显示在同一工作簿的单独工作表中的某个范围内(“展示位置”) 。

如果我在同一张纸上显示值(例如从MASTER到MASTER),下面的代码将起作用,但是当我尝试下面的代码时,A1的“展示位置”上将显示0,而不是实际值30。 / p>

Sub countdataincolums()

Dim master, placement
Set master = ActiveWorkbook.Sheets("MASTER")
Set placement = ActiveWorkbook.Sheets("Placement")

placement.Range("A1").Value = WorksheetFunction.Count(master.Range("E2:E40"))

End Sub

任何建议都将不胜感激!

2 个答案:

答案 0 :(得分:1)

@FaneDuru知道了...问题是基于列格式的:

仅尝试将Count更改为CountA。如果它能如期返回,那显然是格式问题,即使您可以看到数字

更改为CountA可以达到预期的效果,并且可能会成为针对该特定宏的持久解决方案。通过以下方式重新格式化数据:数据-文本到列-下一步-下一步,选择常规并按'Finish'(按@FaneDuru),然后使用count也可以,但是删除了零作为第一位,我需要这个特定的数据集。

基本上,count函数变得混乱。重新格式化确实没有混淆count,但是counta提供了理想的结果。

如果'counta'不再产生期望的结果...我将回去寻求有关如何转换数据的帮助,以便count可以正常工作,然后将其转换回去。

再次感谢大家的帮助!

答案 1 :(得分:1)

您的问题是下一个: 代码本身有效!不是最漂亮的代码,但它应该可以工作。

  1. 尝试以这种方式更改变量声明:

    Dim master As Worksheet, placement As Worksheet

    这不会解决您的问题,但是可以使您免于其他麻烦...

  2. Count函数对数字进行计数,而CountA函数对字符串进行计数。即使您可以在单元格中看到一个数字,它也是VBA 的字符串,如果其格式为 Text。因此,如果您在该特定列中输入任何新的数字,格式为General,则Excel会很容易猜出,并且Count函数将可以正常工作,但特定列的格式如{ {1}},使用Text。如果要计算该特定范围内的所有内容,可以将E:E列设置为文本格式,但是使用Text to Columns(从“数据”选项卡中)并使用Text to Column。它也会计算数字和字符串。

  3. 要切换回CountA功能使用,必须再次使用Count(在选择范围之后),进行完全相同的操作,但在第二次Next之后执行,然后选择常规 ...

  4. 直到现在,我才注意到您对第一个数字缺少零的备注。如果您希望看到23表示23.0,请在Text to Column中使用General更改格式后,将范围设置为Text to Columns并选择###。0。