这似乎相对简单。我正在尝试获取工作表中列的计数功能的值/结果(下面的代码中为“ 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
任何建议都将不胜感激!
答案 0 :(得分:1)
@FaneDuru知道了...问题是基于列格式的:
仅尝试将Count
更改为CountA
。如果它能如期返回,那显然是格式问题,即使您可以看到数字
更改为CountA
可以达到预期的效果,并且可能会成为针对该特定宏的持久解决方案。通过以下方式重新格式化数据:数据-文本到列-下一步-下一步,选择常规并按'Finish'(按@FaneDuru),然后使用count
也可以,但是删除了零作为第一位,我需要这个特定的数据集。
基本上,count
函数变得混乱。重新格式化确实没有混淆count
,但是counta
提供了理想的结果。
如果'counta'不再产生期望的结果...我将回去寻求有关如何转换数据的帮助,以便count
可以正常工作,然后将其转换回去。
再次感谢大家的帮助!
答案 1 :(得分:1)
您的问题是下一个: 代码本身有效!不是最漂亮的代码,但它应该可以工作。
尝试以这种方式更改变量声明:
Dim master As Worksheet, placement As Worksheet
这不会解决您的问题,但是可以使您免于其他麻烦...
Count
函数对数字进行计数,而CountA
函数对字符串进行计数。即使您可以在单元格中看到一个数字,它也是VBA 的字符串,如果其格式为 Text
。因此,如果您在该特定列中输入任何新的数字,格式为General
,则Excel会很容易猜出,并且Count
函数将可以正常工作,但特定列的格式如{ {1}},使用Text
。如果要计算该特定范围内的所有内容,可以将E:E列设置为文本格式,但是使用Text to Columns
(从“数据”选项卡中)并使用Text to Column
。它也会计算数字和字符串。
要切换回CountA
功能使用,必须再次使用Count
(在选择范围之后),进行完全相同的操作,但在第二次Next之后执行,然后选择常规 ...
直到现在,我才注意到您对第一个数字缺少零的备注。如果您希望看到23表示23.0,请在Text to Column
中使用General
更改格式后,将范围设置为Text to Columns
并选择###。0。