You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA调用Excel WorksheetFunction时数据类型变更问题及抑制方法

Excel VBA调用部分Excel函数的数据类型变更特性

本文旨在分享Excel的一个未公开产品特性,以备后续参考。

从VBA调用部分Excel函数时,会出现意外的数据类型变更行为:

Sub test1()
  Dim ou, tu, soa, j&: ReDim ou(1 To 2, 1 To 2), soa(1 To 2, 1 To 1)
  For j = 1 To 2
    ou(j, 1) = j: ou(j, 2) = Now(): soa(j, 1) = j
  Next
  With Application
    Debug.Print "Expected:", TypeName(ou(1, 1)), TypeName(ou(1, 2))
    tu = .Sort(ou, 2)
    Debug.Print "Sort:", TypeName(tu(1, 1)), TypeName(tu(1, 2))
    tu = .XLookup(1, soa, ou)
    Debug.Print "Xlookup:", TypeName(tu(1)), TypeName(tu(2))
    tu = .VLookup(1, ou, 2, False)
    Debug.Print "Vlookup:", , TypeName(tu)
  End With
End Sub

运行输出:

Expected: Long Date
Sort: Double String
Xlookup: Double String
Vlookup: String

可见,这些函数会将Long类型转为Double,Date类型转为String,使用时请留意此情况!

若将该行为视为产品特性,如何抑制其数据类型变更的影响?

更新

  • 存在该特性的额外函数包括:IfError、IfNa、Lookup、HLookup、Filter、Choose
  • 似乎所有预期返回参数原值的函数都存在此特性

内容的提问来源于stack exchange,提问作者rotabor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 15:42:05