由于列格式问题,无法计算枢轴中位数

问题描述 投票:0回答:1

我对宏观世界非常陌生(这里是第一篇文章),所以如果我缺少一个明显的解决方案,我深表歉意。我也一直在使用录制宏功能,所以下面的脚本可能有点混乱。

目标:创建一个自动数据清理的宏,并创建一个计算中位数和其他统计数据的数据透视表

问题:无法计算我的其中一列的中位数。错误消息是:“MEDIAN 不支持字符串/布尔值/日期类型的表达式”。

我的宏的作用和我尝试过的详细信息:

我编写了一个宏,它首先组织我的数据(连续值),然后通过从特定列中删除任何零或 40 的值来清理数据。然而,在清理步骤之后,此列大部分为空白(请参阅下面数据示例中的 metric2)。最后,该宏自动生成一个数据透视表,其中包含少数列的中位数。大部分为空白的列 (metric2) 无法在数据透视表中生成中位数,并出现上述错误消息。

数据组织步骤涉及使用 vlookup 从另一张表中查找正确的值,然后复制并粘贴为整个列的值,以中断 vlookup,以防 vlookup 的唯一标识符发生更改。

这是我用来删除列中所有 40 和零的方法:

    Range("Y:Y").Select
    Selection.Replace What:="40", Replacement:="", LookAt:=xlWhole, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2

    Range("X:AB").Select
    Selection.Replace What:="0", Replacement:="", LookAt:=xlWhole, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2

数据清理后,我尝试将列格式设置为数字(见下文)。我检查了我的 Excel,确实关注列中的单元格被格式化为数字,但中位数函数仍然无法计算某一特定列的中位数,并输出错误“MEDIAN 不支持字符串/布尔/日期类型的表达式” ”。其他列生成中位数就好了。

    Range("S:AB").Select
    Selection.NumberFormat = "0.0"

这是我正在使用的数据示例。 Metric2 是难以生成中位数的列。

Metric1 Metric2
-1.2    
-0.8    
-0.8    
-0.7    
-0.9    
-1.9    
-1.6    
-0.6    
-0.7    
-1.2    
-1.1    
-1.7    
-1.2    
-0.6    
-1.7    
-1.7    
-0.9    
-1.0    
-0.9    
-1.0    
-1.2    
-1.3    
-1.0    
-1.9    
-1.0    
-1.2    
-1.1    
-1.3    
-1.3    
-1.1    
-1.1    
-1.2    
-0.9    
-1.3    
-1.2    
-1.4    
-1.3    
-0.9    
-1.2    
-0.7    
-1.1    
-0.8    
20.5    29.6
-0.7    
-1.2    
-0.3    
-0.7    
-0.9    

我检查了我的数据 - 所有列一开始都格式化为数字,并且在清理后也以数字结束。当我手动将过滤器应用于 Metric2 列时,我注意到 Excel 想要将原始列按数字排序。在清理步骤之后(只留下几个数字,大部分是空白单元格),然后手动应用过滤器,excel 希望按字母顺序对 Metric2 进行排序。不确定这是否意味着该列实际上被格式化为其他内容,即使列中的每个单元格(标题除外)都显示格式为数字。

excel vba pivot-table median dataformat
1个回答
0
投票

通过使用@MartinBrown 的建议修复

我使用 =VALUE() 修改了 vlookup 函数,以确保从另一张工作表获取的所有数据都转换为值:

Range("S2").Formula = "=VALUE(VLOOKUP(R2,Target!R:S,2,FALSE))"

谢谢大家!我现在的下一个目标是销毁所有 .select 和 .activate

© www.soinside.com 2019 - 2024. All rights reserved.