【问题标题】:Excel cells from Access export look empty but are not (=isblank=FALSE)Access 导出中的 Excel 单元格看起来是空的,但不是 (=isblank=FALSE)
【发布时间】:2018-01-25 11:02:21
【问题描述】:

我的问题是 Excel 电子表格(从 Access 导出为 .xls)的单元格看起来是空的,但实际上不是。这破坏了我的计算和导航快捷方式。

单元格中没有公式或内容(已在此主题上发布的答案不能解决我的问题)。我附上了我的问题的图片(见底部)

故障排除显示:

  • 如果我测试这些单元格,例如=isblank(a1),这是错误

  • 单元格长度为0,根据=LEN(a1)

  • 如果我尝试“转到(特殊)突出显示“空白”(或任何其他转到特殊组合,如公式/文本、数字等),它不会突出显示这些空的单元格

  • 如果我过滤列,我可以从过滤器列表中选择这些非空的“空白”(这是识别到目前为止我发现的这些棘手单元格的唯一方法)-

所以我的专栏在一些单元格中有条目,“空白”非空单元格。我只想要带有条目的单元格,其余的我需要清除。这也令人讨厌地意味着跳到下一个空或非空单元格的快捷方式不起作用(它全部读取为非空白) - 使得导航大型数据集非常痛苦。

一旦我在单个“非空”空白单元格中单击并按 Enter,这似乎会清除单元格内容(“=isblank”公式中的“FALSE”现在切换为“TRUE”) - 这是但是,在如此大的数据集中修复单个单元格是不可行的。


有人可以帮忙吗?!

我找到了 2 个基本的解决方法来解决这个问题,但我真的很想知道这种情况发生的原因和原因以及将来如何避免它。

解决方法 1 在 excel 中,过滤列,仅显示“空白”,然后突出显示过滤后的列并按删除。取消过滤列表并解决问题。 解决方法 2 从“file.xlsx”保存 excel 电子表格并另存为“.csv”。 全部关闭,打开 csv & 似乎非空空白单元格已修复,显示 =isblank= TRUE & 现在可以使用 [CNTL 箭头键] 快捷键跳过。

这太令人沮丧了,我还没有看到任何类似的问题或答案来说明为什么会这样?

为什么会发生这种情况?还有其他解决方法吗? 感谢蜂巢思维! excel sheet shows non-blank empty cells - working

【问题讨论】:

  • 使用 =A1="" 或 =IF(A1="","Blank","数据存在于单元格中")
  • 噢,这行得通!谢谢第六感!但是,这会影响不同的列。有什么方法可以直接清除列中的单元格(我知道我可以根据 col B 是否显示“空白”或“数据存在”来过滤 col A) - 在从 access 导出之前还是在 excel 中?
  • 在 ms-access 中,您可以通过选择 Isnull 作为显示空白单元格的条件来使用过滤器(特别是列)。在 excel 中,您可以在帮助列中使用建议的公式来了解实际的空白,或者您也可以在 excel 中使用自动过滤器并从下拉列表中选择空白,这将识别实际的空白(不像 isblank() 函数)。跨度>
  • 也可以试试 CLEAN 函数 - support.office.com/en-us/article/… - 例如=IF(ISBLANK(CLEAN(A1)),"blank","not blank")

标签: excel ms-access export-to-excel is-empty vba


【解决方案1】:

有时让 ctrl+up/down 停止在数据集的边缘会很好,但有时则不然;这是我用来清除所选范围的“空白”单元格的宏:

'clears cells with error or empty string values
Public Sub clearJunk()
    Dim scrn As Boolean: scrn = Application.ScreenUpdating: Application.ScreenUpdating = False

    Dim i As Long, rowCount As Long, FirstRow As Long
    Dim col As Range

    rowCount = Selection.Columns(1).Cells.count
    FirstRow = Selection.Cells(1).Row - 1
    For Each col In Selection.Columns
        For i = 1 To rowCount
            If IsEmpty(col.Cells(i)) Then i = col.Cells(i).End(xlDown).Row - FirstRow
            If i > rowCount Then Exit For
            If IsError(col.Cells(i).Value) Then
                col.Cells(i).ClearContents
            ElseIf col.Cells(i).Value = "" Then
                col.Cells(i).ClearContents
            ElseIf Trim(col.Cells(i).Value) = "" Then
                col.Cells(i).ClearContents
            End If
        Next i
    Next col

    Application.ScreenUpdating = scrn
End Sub

此外,如果您从 MS-Access 复制和粘贴,您可能会发现这个也很有用:

Public Sub UnWrapText(): Selection.WrapText = False: End Sub

我已将两个按钮都绑定到功能区/QAT 上的按钮,这让我的生活更加轻松。

【讨论】:

    【解决方案2】:

    您也可以尝试以下方法:

    • 选择您所在的地区。
    • 在“查找和替换”对话框中,将“查找内容:”框留空。
    • 输入数据中尚不存在的任何值,例如“替换为:”框中的竖线(“|”)。
    • 选中“匹配整个单元格内容”选项。
    • 全部替换
    • 现在,在“查找内容:”框中输入管道,并清除“替换为:”框。
    • 全部替换”,大功告成!

    来源:https://www.mrexcel.com/board/threads/how-to-remove-null-string-from-cells.565955/(我更新了一点)

    【讨论】:

      猜你喜欢
      • 2017-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-06
      • 1970-01-01
      相关资源
      最近更新 更多