2017-07-14 31 views
1

我在桌上有70列,它大部分是空的。我想刪除沒有單個值的列。問題是,表格有18000行,手動滾動是愚蠢的。計算70中Access值的列數?

我厭倦了Expression和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

下面是表的樣子:

empty columns access 2000

我如何檢查所有70列正常,是不是用VBA程序?

代碼的外觀如何?

還是有更好的辦法?

+0

這看起來像非常規範化的數據。它不應該以這種方式存儲。 – Minty

+0

是的,我同意,70列應該包含1,其中在行中有一些介於1和70之間的值。因此,如果某個列包含值43,則正確的方式是將列43包含1.同樣適用對於這70列中任何地方的1到70之間的所有其他值) – Vlad

+0

應該只有3列。行的UniqueID,存儲Kx編號和值的列。然後您只存儲存在的值,並且查詢變得簡單。 – Minty

回答

2

我會在循環中使用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 

如果打印(Ctrl + G鍵打開直接窗口)

x  0 

然後柱t4k<x>具有零行與值。