1

这是一个冗长的查询,因为我包含了失败的代码。

问题:当我完成将文本文件导入 Excel 后,我的工作表包含许多“空白”单元格。我之前在其他地方成功使用过以下代码,但在这种情况下它对我不起作用。

Range("b1:AZ60").Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.Delete shift:=xlToLeft

我在网上搜索并找到了一些建议的解决方案(如下)。我已经尝试在上面的代码之前运行下面的 4 个代码片段中的每一个,以清除所谓的空白单元格的内容,但到目前为止没有任何效果。

1号 - - - - - - - - - - - - - - - - - - - - - - - - ---------

 Set rng = Intersect(Selection, Selection.Parent.UsedRange)

For Each C In rng
   If Trim(C) = "" Then
   C.ClearContents
   End If
Next C

我已经用 c.value 替换了上面的装饰,但没有

If C.Value <> "" Then

2号 - - - - - - - - - - - - - - - - - - - - - - - - --

For Each aCell In ActiveSheet.Cells.SpecialCells(xlCellTypeConstants)
    If Not aCell.Value Like "*[! ]*" Then aCell.ClearContents
Next

3号------------------------------------------------ -

For Each C In rng
   If IsEmpty(C) Then
   C.Delete shift:=xlToLeft
   Else
   ActiveCell.Select
   End If
Next C

4号--------------------------------------

最后我找到了这个干净的功能,但这似乎没有奏效。

Set rng = Intersect(Selection, Selection.Parent.UsedRange)

For Each C In rng
    If Not IsError(C) Then
        C.Value = MEGACLEAN(C)
    End If
Next C
              '
              '
              '
End Sub
-----------------------------------------
Function MEGACLEAN(varVal As Variant)
Dim NewVal As Variant
If IsMissing(varVal) Then Exit Function
NewVal = Trim(varVal) 'remove spaces
NewVal = Application.WorksheetFunction.Clean(NewVal) 'remove most unwanted characters
NewVal = Application.WorksheetFunction.Substitute(NewVal, Chr(127), "") 'remove   
ASCII#127
NewVal = Application.WorksheetFunction.Substitute(NewVal, Chr(160), "") 'remove  
ASCII#160
MEGACLEAN = NewVal
End Function

也许这与我从中导入的文本文件有关,但由于我仍然有一些空白单元格,这些都不能令人满意。任何帮助将非常感激!!

4

2 回答 2

0

找出这些“空白”单元格中有哪些字符。

选择一个单元格并运行下面的 GetSelectionContents 宏:

Sub GetSelectionContents()
MsgBox sAnalyseString(selection)
End Sub

Function sAnalyseString(sSTR As String) As String
Dim lLoop As Long, sTemp As String

For lLoop = 1 To Len(sSTR)
    sTemp = sTemp & ", " & Asc(Mid(sSTR, lLoop, 1))
Next

sAnalyseString = Mid(sTemp, 2)

End Function

然后,一旦你有了你的神秘角色,在运行你的删除宏之前替换它。

Activesheet.usedrange.Replace What:=chr(32), Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False

于 2012-10-30T18:26:47.293 回答
0

不确定如果我应该像这样回答我自己的问题,但我弄乱了上面的代码,并将它与我找到的 mcaro 混合在一起,并想出了下面的代码,虽然速度很慢,但似乎可以对我来说的诀窍。感谢所有的输入!

 Set rangetext = Cells.SpecialCells( _
 xlCellTypeConstants, _
 xlTextValues)
 For Each rangesheet In rangetext
 If Trim(rangesheet.Value) = "" Then
 rangesheet.ClearContents
 End If
 Next
Set rangetext = Nothing
Set rangesheet = Nothing




 Range("b1:AZ60").Select
 Set rng = Intersect(Selection, Selection.Parent.UsedRange)
 For Each C In rng
   If IsEmpty(C) Then
   C.FormulaR1C1 = "=0"
   If C.Value = 0 Then
   C.ClearContents
   C.Select
   Selection.SpecialCells(xlCellTypeBlanks).Select
   Selection.Delete shift:=xlToLeft
  End If

  End If
 Next C
于 2012-10-31T11:55:26.017 回答