Excel:select性粘贴>使用VBA添加“空白”单元格

我有一个大的数据集,我在Excel中工作。 大约1000多列,接近100万行。

我的问题是,我的很多数字被格式化为文本。 要解决这个问题,我一直在使用复制粘贴>添加技术,添加一个空白单元格。

我的问题是,我试图macros这个function,但我不知道如何添加一个空白单元格。

我试图得到狡猾,并有macros创build一个新的行,做添加,然后删除该行。 但是,我似乎也无法得到这个工作。

任何人都有解决scheme?

您不需要select整个范围,只需要select其中包含值的单元格。 我会build议特殊单元格function:

  1. 突出显示其中包含#1的单元格并复制该单元格
  2. 突出显示一列要转换的单元格
  3. F5>转到>特殊>常量 (您可能需要使用这里的选项来获取您想要的单元格)
  4. OK (现在只有具有值的单元格被选中)
  5. 现在selectPaste Special> Multiply

使用VBA,您可以有条件地将目标值转换为双打(或您select的其他types)。
下面的testing示例假定:

  1. 您正在ActiveWorkbook使用Sheet1
  2. 在列A(1)中存储为文本的号码
  3. 转换后的值出现在B列(2)

另外:在运行VBA之前,保存你的工作可能总是一个好主意。 干杯,快乐的编码。

 Option Explicit Sub convert_to_dbl() Dim r As Long Dim ws As Worksheet Set ws = ActiveWorkbook.Sheets(1) For r = 1 To FindLastRow(ws) With ws If .Cells(r, 1).Value <> "" Then .Cells(r, 2).Value = CDbl(.Cells(r, 1).Value) End If End With Next r End Sub Function FindLastRow(ws As Worksheet) Dim LastRow As Long If WorksheetFunction.CountA(Cells) > 0 Then LastRow = Cells.Find(What:="*", After:=[A1], _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious).Row End If FindLastRow = LastRow End Function 

下面的代码做我正在寻找的。

 Sub psAdd() Dim x As Range 'Just a blank cell for variable Dim z As Range 'Selection to work with Set z = Cells Set x = Range("A65536").End(xlUp).Offset(1) If x <> "" Then Exit Sub Else x.Copy z.PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd Application.CutCopyMode = False 'Kill copy mode End If x.ClearContents 'Back to normal End Sub