如何從 VBA 中的陣列中刪除 null 值

發布 科技 2024-08-16
13個回答
  1. 匿名使用者2024-02-01

    從陣列 a 中去除 null 值並返回陣列 b。

    sub test()

    dim a as variant, b() as stringdim i as integer, k as integera = array("asd", "", "ds", "df3")for i = 0 to ubound(a)if len(a(i)) then

    redim preserve b(0 to k)b(k) = a(i)

    b(k)k = k + 1

    end if

    nextend sub

  2. 匿名使用者2024-01-31

    如果是一列,沒關係,在a1:a10中,任何空格都可以去掉,一行的空間也應該去掉:

    public sub ww() '

    dim ar, arr

    ar = [a1:a10]

    arr = split(

    join(arr)

    end sub

  3. 匿名使用者2024-01-30

    1.VBA中使用DIM關鍵字來宣告陣列,DIM關鍵字後面跟著陣列名稱,名稱後應該有括號,然後在括號後可以表示陣列的長度,也可以用to關鍵字表示範圍,最後用AS關鍵字表示型別, 具體格式如下圖所示

    2.下面舉例說明用法,首先**中有6000個值,過濾掉大於90的值,分別複製到b列或c列,分別用兩種方法寫**,一種方法不包含陣列,另外兩種方法包含陣列,比較兩種方法的速度:

    2. 在 Excel 工作表中,單擊選單欄開發工具,然後在工具欄中單擊 Visual Basic:

    6.在工作表介面的開發工具選單下,點選插入按鈕,插入表單控制項,分別關聯兩組**:

    7.點選按鈕過濾資料1,即程式執行秒

    8.點選過濾資料2按鈕,即乙個帶陣列的組,程式在幾秒鐘內執行,可以看到這個方法要快很多:

  4. 匿名使用者2024-01-29

    sub test()

    dim a(0 to 5) '定義乙個包含 6 個元素的一維陣列,下標從 0 到 5。

    dim b() '定義乙個動態陣列,陣列的維度不確定,元素不確定,需要 redim 重新定義陣列的大小,為其賦值。

    dim c(1 to 5, 2 to 3) '定義二維陣列 end sub

  5. 匿名使用者2024-01-28

    如果是一列,沒關係,在a1:a10中,任何空格都可以去掉,一行的空間也應該去掉:

    public

    subww()

    dimar,arr

    ara1:a10]

    arrsplit(

    join(arr)

    endsub

  6. 匿名使用者2024-01-27

    它只能與帶有 VBA 的附加例項一起處理,並且可以通過篩選進行處理。

  7. 匿名使用者2024-01-26

    sub 重置 array()。

    dim ar(10) as range, br(10) as range

    set ra =

    for i = 1 to 10

    set ar(i - 1) =

    if not cells(i, 1) = empty thenset br(a) = ar(i - 1)br(a).copy cells(a + 1, 5)a = a + 1

    end if

    nextend sub

    你看看這是否適合你的需求。

  8. 匿名使用者2024-01-25

    可以是空的。 但我覺得你說的問題並不簡單:例如,我把 a1:a10 放在陣列 arr 中。 使用 msgbox msgbox arr(1, 1) 時,顯示為空。 它也可以用於計算。

    sub test()

    dim arr

    arr = range("a1:a10")msgbox arr(1, 1) +100end sub

    結果為空。

  9. 匿名使用者2024-01-24

    您可以定義泛型元素的陣列。

    沒有值的元素可以分別用 null 或 empty、isnull() 或 isempty 來檢測。

    如果賦值為 null,則不能對變數執行任何操作,也不能將其與等號進行比較,否則將產生錯誤。

    如果它被指定為空,則可以計算為 0。 但是,如果賦值 0,則 isempty() 函式將不會返回 true。

  10. 匿名使用者2024-01-23

    如果沒有數值,則系統預設為 0。 沒有 null 值,並且陣列的每個元素在定義時都初始化為 0。

  11. 匿名使用者2024-01-22

    看來你寫VBA沒有問題,所以我就不說基本操作了。

    滿足您的要求。 你只需要為“clear”鍵的點選事件寫一段,你只需要一句話就可以清除Excel工作表中的資料

    要清除窗體中的資料,這需要一些先決條件,假設你有很多關於控制項命名的規則,例如,你們都在使用文字框來完成資料輸入,並且這些文字框控制項的名稱是“txt***”,然後使用以下**清除這些控制項的內容:

    dim ct as control

    for each ct in

    if left(,3)="txt" then ""

    next

  12. 匿名使用者2024-01-21

    例如,在文字框 text1 中,使用 text1 = “” 直接清除框的原始內容。

    或者有乙個明確的宣告。

  13. 匿名使用者2024-01-20

    **:dim arr1()

    dim arr2()

    在此表單中建立乙個**,可以修改內容。

    ==** 屬性設定:(這是手動設定並新增修改的)。

    在此表單中建立乙個**,可以修改內容。 **有 3 列,由於陣列的維數不確定,因此行數不確定。 您可以在下面新增自己的行。 如果行數過多,則會自動新增垂直滾動條。

    如果 ** 中的資料太長,最好將其設定為換行。

    子陣列()。

    arr1 = array("a", "b", "c", "d", "f", "g")

    arr2 = array("1", "2", "3", "4", "5", "6")

    end sub

    private sub form_load()

    呼叫陣列。

    for i = lbound(arr1) to ubound(arr1)

    arr1(i)

    next i

    在表單載入事件中實現以下功能*****====

    第一行或標題行中的一行分別是“序數”、“陣列 1 值”和“陣列 2 值”的標題(如果設定 ** 時可以設定標題項,則無需 ** 即可實現)。

    第一列是序列號,從 1 開始,從 1 開始往下。

    第二列自動匯入陣列 arr1 的值,第三列自動匯入陣列 arr1 的值。

    end sub

相關回答
11個回答2024-08-16

這並不難,有很多方法,看看私信吧。

6個回答2024-08-16

呼叫索引函式。

在引數中,0 表示全部。 >>>More

12個回答2024-08-16

我不太明白你的意思,也不知道這個根本不起作用還是執行錯誤。 >>>More

12個回答2024-08-16

你打算做什麼?

例如,set rng = range("a:a").find("需要注意什麼"如果找不到此對話方塊,則不會彈出它。 如果未找到,則 rng=nothing >>>More

5個回答2024-08-16

range(3,1) 是從 3 到 1。 從最後乙個開始遍歷可以: >>>More