停止Excel从更改单元格内容,曾经

我使用卡号,如信用卡和身份证号码。 显然,我们不用卡号进行任何计算。 他们是“文本”。

我将它们格式化为文本,我将它们input为文本。 我知道这是如何工作的。 Excel不关心。 16位数字的卡号将他们的最后一位数字变成了零,变成了科学记数法,我没有告诉Excel做的愚蠢的东西。

我需要做的事情,如从我们目前不完善的networking系统下载的文件中查找/删除单元格中的空格。 系统向我发送16位数字的文件,格式为文本的单元格,但由于错误,最后有空格。 我find/删除所有的空格,我所有的卡号都转换成科学记数法,最后一位数字变为0.他们是文本,他们被格式化为文本,我大喊大叫他们是文本的屏幕,为什么Excel拒绝承认他们是文字? (我宁愿find一种方法来阻止Excel的行动,而不是find一种方法告诉我们的程序员在每个单元格中放一个撇号)

我如何做到这一点,让Excel只是做一些我没有告诉它做的事情? 或者至less阻止它做任何不喜欢的数字。 也许我可以写一个macros,每当它发现“Uhoh我应该改变这个数字到不同的东西! 我会把它的格式设置为文本一千次。

当我尝试用大于15位的数字进行计算时给我一个错误,使我的电脑剧烈爆炸,没关系。 只是停止改变数字。

可能吗? 我有成千上万的数字需要在许多不同的场景中改变。 我只是想阻止它试图帮助。 我不明白为什么这将是困难的。 我有2007年,但其他版本的答案也会很好。

我find了一个解决scheme。 突出显示有问题的列。 右键单击并select格式单元格。 select自定义,然后select一个0(零)。 它会使你的所有专栏如何你想要的。

对不起,要恢复这个老话题,但如果有人发现这可能是有帮助的。

我有同样的问题。 我们数据库中的一列包含如下数字:

111206,1111206,2 .. .. 111206,10111206,11

并且还以奇怪的格式进行date。 只要说这是一个主要的PITA粘贴到Excel中。 我也做了像在我的屏幕上大喊大叫,但微软似乎仍然忽略了非常有用的用户input。 (在另一个说明:我投票的键盘后触摸注册 – 如果你击中了超过80%的最大力量的ENTER,它应该跳过任何确认对话框并执行所选命令的“只是f *!@#$ DO IT”模式这意味着超级用户友好恕我直言的重大突破。)

无论如何,一位同事指着我“select性粘贴”选项。 在Excel单元格中右键单击,selectselect性粘贴并select文本。 和presto。

很less有我感到这个傻眼:)

最简单的方法是复制到记事本,然后插入一个新的单元格或格式为文本,然后将数据从记事本复制到Excel电子表格中。

我有这个问题,粘贴在单引号显示的报价和格式为文本不起作用,因为它改变了价值观,因为他们被粘贴在。什么对我来说是粘贴在单引号之前因此它显示单引号,然后做一个replace全部用单引号replace所有单引号。 这似乎很奇怪,但它是我处理数据粘贴到Excel 2007中最快的方式。

这是Excel的“function”,无法更改或closures。 如果程序员已经设法从信用卡号码中取出空格,我相信他们可以在string的前面处理附加的撇号。

这是一个可以做你想做的事情的macros

 Sub SafeFindAndReplace() Dim rCell As Range For Each rCell In ActiveSheet.UsedRange.Cells If InStr(1, rCell.Text, " ", vbBinaryCompare) > 0 Then If rCell.NumberFormat = "@" Then rCell.Value2 = CStr(Replace(rCell.Text, " ", "")) End If End If Next rCell End Sub 

一定要尝试一下你的数据的副本,而不是现场的东西,以确保它的工作。

或者根据评论,你可以在选定的单元格上进行。 如果你有很大的范围,并且只需要一个较小的子集,那就更好了。

 Sub SafeFindAndReplaceSelection() Dim rCell As Range If TypeName(Selection) = "Range" Then For Each rCell In Selection.Cells If InStr(1, rCell.Text, " ", vbBinaryCompare) > 0 Then If rCell.NumberFormat = "@" Then rCell.Value2 = CStr(Replace(rCell.Text, " ", "")) End If End If Next rCell End If End Sub 

我经常不得不把数据从csv中转出来。 每当由Excel打开另一个程序创build的csv时,如果一个字段中的数字超过15个,Excel坚持转换为科学记数法。 为了解决这个问题,我决定将导出的CSV文件导入到Google文档电子表格中。 然后,我将Google文档电子表格保存为一个Excel文件,并且没有更多的科学记数法。

现在,我将使用Excel完成这项任务,但是完成后,我将尽可能高效地完成我需要在Google文档电子表格中完成的所有工作。也许我再也不用处理Excel了“有用”了!

基于我使用自定义格式00000-0000的邮政编码读取的内容,我尝试创build一个自定义格式为0000000000000000.它将科学记数法转换回16位数字。

没有格式在excel中将看起来工作。 这里是可视化的基本代码来做到这一点:

 Sub Format_CSV() 'Go to the top cell of the column that you wish to format as text with no scientific notation hassle and then run this macro. Assign a shortcut key to make your life easier ActiveCell.Offset(0, 1).Columns("A:A").EntireColumn.Select Selection.Insert Shift:=xlToRight Selection.NumberFormat = "@" ActiveCell.Offset(0, -1).Range("A1").Select Dim ConvertToText As String Dim StartStop As Variant StartStop = ActiveCell Do While StartStop <> "" ConvertToText = ActiveCell ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = ConvertToText ActiveCell.Offset(1, -1).Range("A1").Select StartStop = ActiveCell Loop ActiveCell.Columns("A:A").EntireColumn.Select Selection.Delete Shift:=xlToLeft End Sub 

我发现了一种以文本格式保存数字的方法,即使粘贴多个单元格时也是如此。 我正在使用Excel 2010。

  1. select单元格范围并使用“格式” – “自定义”。 应用(“at”符号)@作为格式。
  2. 从源文件中select你的值。
  3. 右键单击要粘贴的范围(或只是左上angular),然后在粘贴选项下select匹配目标格式。

我同意这是非常愚蠢的,我们必须现在跳过这个办公室,以前做了很多事情,以前更容易。

从应用程序打开Excel文件(而不是双击该文件)。

然后select文件,而不是点击打开的button,点击它旁边的小箭头,select“打开并修复”,然后点击“修复”button,文本导入向导将出现,按照向导,并确保select文本为向导的步骤3中的列数据格式。

  • 将单元格格式化为文本(格式,单元格,文本)
  • 用一个'(单引号)

两者对我来说同样适用。

编辑:我testing了在这些“文本编号”上replace空格,事实上,他们变成了数字。

尝试Googlesearch“正则expression式”。 有很多方法可以在Excel中使用正则expression式,这样就可以容易地用一个单引号将您的信用卡号码加上前缀。
Morefunc

格式,单元格,文本右键单击,select性粘贴,值

要么

粘贴格式,单元格,文本右键单击,select性粘贴,值

如果您尝试从其他地方复制数据尝试粘贴特殊并select文本。 它应该保留原来的格式

即使格式化为文本,使用'0'或'#'在Excel 2007中对我来说不适用于大于15位的数字。

我不得不点击应用程序button(function区左上方的办公室图标),单击Excel选项,转到公式子菜单,然后在右侧的“错误检查规则”部分下,取消选中“数字格式化为文本或者在撇号之前。

使用#选项时,数据在第15位之后被切断 – 15号之后的所有数据变成零,这是不可接受的。

我总是有同样的问题 – 所有的解决scheme似乎太复杂,没有工作。 我使用USPS将包裹发送给我的客户,并得到一个很长的数字,如果直接复制,则无法将其转换为公式。 我试图将列格式化为文本,但是当我复制数据时,它总是再次转换。

然后我注意到这个窍门是:

  • 设置栏的格式,或者您想要将文本编号。
  • select第一个单元格,而不是整个列或你想要的数据区域 – 这是我的错误,因为我总是select整个区域。
  • 然后右键单击并select粘贴为文本

我一直在挣扎多年,直到我终于搞定了! 现在,我可以直接从USPS复制,而不必复制到Word,转换为纯文本,并将每个数字前面的怪异字符粘贴到Excel之前。