Vba 计算值在70-Access 2000之间的列数?

Vba 计算值在70-Access 2000之间的列数?,vba,ms-access,Vba,Ms Access,我的表中有70列,大部分是空的。我想删除没有单个值的列。问题是,表格有18000行,所以手动滚动是愚蠢的 我厌倦了表达式和Select查询,但我看到表达式可以接受有限的字符数,即没有足够的空间覆盖所有70列 以下是我尝试过的: Format(IIf([t4k1],[t4k1],""), "00") & " " & Format(IIf([t4k2],[t4k2],""), "00") & " " & Format(IIf([t4k3],[t4k3],""), "0

我的表中有70列,大部分是空的。我想删除没有单个值的列。问题是,表格有18000行,所以手动滚动是愚蠢的

我厌倦了表达式和Select查询,但我看到表达式可以接受有限的字符数,即没有足够的空间覆盖所有70列

以下是我尝试过的:

Format(IIf([t4k1],[t4k1],""), "00") & " " & Format(IIf([t4k2],[t4k2],""), "00") & " " &
Format(IIf([t4k3],[t4k3],""), "00") & " " & Format(IIf([t4k4],[t4k4],""), "00") & " " &
Format(IIf([t4k5],[t4k5],""), "00") & " " & Format(IIf([t4k6],[t4k6],""), "00") & " " &
Format(IIf([t4k7],[t4k7],""), "00") & " " & Format(IIf([t4k8],[t4k8],""), "00") & " " &
Format(IIf([t4k9],[t4k9],""), "00") & " " & Format(IIf([t4k10],[t4k10],""), "00") & " " &
Format(IIf([t4k11],[t4k11],""), "00") & " " & Format(IIf([t4k12],[t4k12],""), "00") & " " &
Format(IIf([t4k13],[t4k13],""), "00") & " " & Format(IIf([t4k14],[t4k14],""), "00") & " " &
Format(IIf([t4k15],[t4k15],""), "00") & " " & Format(IIf([t4k16],[t4k16],""), "00") 
如您所见,该表有70列,t4k1、t4k2、t4k3。。。t4k70

以下是表格的外观:

如何正确检查所有70列,是否使用VBA代码

代码是什么样子的

还是有更好的方法?

我会在循环中使用
DCount()
。例如

Sub PrintEmptyColumns()

    Dim i As Long
    For i = 1 To 70
        Debug.Print i, DCount("*", "CPA_foo", "Nz(t4k" & i & ", '') <> ''")
    Next i

End Sub

然后列
t4k
有零行值。

这看起来像是非常不正常的数据。它不应该以这种方式存储。是的,我同意,70列应该包含1,行中有一些值介于1和70之间。因此,如果某个列包含值43,那么正确的方法是将列43包含1。这同样适用于这70列中1到70之间的所有其他值:)应该只有3列。行的唯一ID,一个存储Kx编号和值的列。然后只存储存在的值,查询变得简单。
x     0