我遇到了一个不寻常的问题,Excel 将包含明显相等值的单元格视为不同的值。
为了复制该问题,我附上了一个显示此行为的电子表格这里。
如果你不想下载它,那么它看起来是这样的:
Excel 将单元格 A2 和 B2 视为不同,尽管两者都有“G”。单元格 C2 正在用 进行测试=EXACT(A2,B2)
。
真正的问题是,当我将这些数据导入到 R 中时,它会将它们视为不同的数据并阻止对数据进行正确的分析。
在这种情况下,我可以删除这些单元格,重新输入“G”,它们现在将相同,但我有一个巨大的数据集中许多相同的字符被视为不同的字符。
这是什么原因造成的?有没有快速的方法可以自动修复更大版本的问题?
答案1
此类问题通常是由@ScottCraner 在评论中提到的问题引起的。原因如下...
使用您在问题中提供的电子表格剪切,假设......
G
在单元格后面有一个空格A2
,并且- 有不是
G
单元格后面有一个空格B2
如果是这样的话,尽管从我们看来它们是一样的……
- 单元格
A2
将被 excel 视为相等"G "
,并且 - Excel
B2
会将单元格视为等于"G"
因此,你会进入FALSE
牢房C2
您需要修剪和清理所有包含尾随不可打印字符的单元格(删除尾随和前导空格、回车符等),以确保单元格中数据的一致性。
您可以通过重新输入应该存在的值来手动执行此操作,但是如果您有很多单元格可能存在此问题,则创建宏可能会节省时间。
使用 VBA 完成任务。
对于一段很棒的代码,你可以使用电子表格大师这是为了
处理 Excel 数据的修剪(删除前导和结束空格)和清理(删除不可打印的字符)过程。
Sub CleanTrimCells_Evaluate()
'PURPOSE: A Fast way to Clean/Trim cell values in user selection
'AUTHOR: Armando Montes
'SOURCE: www.TheSpreadsheetGuru.com/the-code-vault
Dim rng As Range
Dim Area As Range
'Weed out any formulas from selection
If Selection.Cells.Count = 1 Then
Set rng = Selection
Else
Set rng = Selection.SpecialCells(xlCellTypeConstants)
End If
'Trim and Clean cell values
For Each Area In rng.Areas
Area.Value = Evaluate("IF(ROW(" & Area.Address & "),CLEAN(TRIM(" & Area.Address & ")))")
Next Area
End Sub