首页 > 解决方案 > 如何从地址方法中获取完整的返回值?

问题描述

我在 Excel 表中有一列数据,其中分布有空单元格。我有一个匹配的日期/时间信息列,其中没有空单元格。我需要从日期/时间列中删除与数据列中的空单元格匹配的那些元素。例如,我需要删除 5 和 9 的时间元素。

Time Data
   1    1
   2    2
   3    3
   4    4
   5
   6    5
   7    6
   8    7
   9
  10    8   
  11    9
  12   10

使用 VBA,我使用以下代码生成了数据列中的空白单元格列表:

deleteCells = sht.Columns(n).SpecialCells(xlCellTypeBlanks).Address _
    RowAbsolute:=False, ColumnAbsolute:=False

然后我使用以下代码删除时间列的随附元素。

destSht.Range(deleteCells).Offset(0, n - 1).Clear
destSht.Columns(2*n-1).SpecialCells(xlCellTypeConstants).Copy _
    Destination:=destSht.Columns(tempcol)
destSht.Columns(tempcol).Copy Destination:=destSht.Columns(2*n-1)`

(偏移量表示删除给定参考左侧的一列,然后将以下两行数据复制到临时位置,并在此过程中关闭列中创建的间隙,然后再次将其复制回来。)

但是,返回的字符串deleteCells被截断为 256 个字符(Len(deleteCells) => 256)。这并不涵盖我需要删除的所有单元格引用。

如何让地址返回更长的字符串?如果这不会返回超过 256 个字符,我怎样才能获得我需要从时间列中删除的完整单元格列表,以便拥有一个连续的数据列?

标签: excelvbastringstring-length

解决方案


@Rory 建议你做这样的事情......根据需要更改列字母偏移值。注意:如果你使用一个负数来抵消 Col A,你会得到一个错误。

For Each cell In Range("B2:B" & Cells(Rows.Count, "B").End(xlUp).Row)
    If cell = "" Then
        cell.Offset(, -1).Clear
    End If
Next cell

推荐阅读