今天图老师小编要跟大家分享Excel单元格数据特殊处理实例,精心挑选的教程简单易学,喜欢的朋友一起来学习吧!
【 tulaoshi.com - excel 】
有朋友要求Excel工作表的A1单元格和B1单元格中有两个数字,这两个数字有一部分相同,现在要找出其中相同的数字并写入单元格C1,找出A1中有而B1中没有的数字并写入单元格D1,找出B1中有而A1中没有的数字并写入单元格E1。
如下面的工作表图片:
我不知道给出的数字是否都是按这样的规律,即第一个原始数据的后面几位数与第二个原始数据的前面几位数相同。如果是这个规律的话,则可以就这个具体的例子给出下面的代码来实现:
Sub SeparateNumber()
Dim strFirst As String
Dim strResult As String
Dim StartNum As Integer
Dim EndNum As String
Dim i As Integer, j As Integer
strFirst = Left(Range(B1″), 1)
StartNum = InStr(1, Range(A1″), strFirst)
j = 1
For i = StartNum To Len(Range(A1″))
EndNum = Mid(Range(A1″), i, 1)
If EndNum = Left(Range(B1″), j) Then
j = j + 1
End If
Next i
If j 1 Then
strResult = Mid(Range(A1″), StartNum, i - 1)
End If
‘单元格C1中的数据
Range(C1″).Value = strResult
‘单元格D1中的数据
Range(D1″).Value = Left(Range(A1″), StartNum - 1)
‘单元格E1中的数据
Range(E1″).Value = Right(Range(B1″), Len(Range(B1″)) - j)
End Sub
代码很简单,只是运用了几个VBA函数。
讨论:
其实代码可以进一步简化,因为VBA还有一个数组函数(Split函数)。 如果要将其变为通用的,则可将上述代码转化为自定义函数,并用相对量代替代码中的硬编码。 两个单元格中的数字如果不是按上面提到的规律,则可能两个单元格中的数字中间部分相同,而其它部分不同;或者一个单元格中的数字结尾部分和另一个单元格中的数字的中间部分相同;等等。
用Powerpoint制作图表幻灯片其实是一件很容易的事,但让人很头疼的是图表中所用的数据如何输入。一是我们有原始数据,再次输入数据显得有点浪费时间,再一个这里的数据表处理数据不像Excel表格那样方便,有没有办法直接利用Excel表格里的数据来建立图表呢?有,我们可以利用下面介绍的两种方法来免去烦琐和重复输入过程。
一、 直接复制数据到PowerPoint中
要想直接利用Excel中的原始数据来创建图表必须有一份原始的数据文件,然后进行如下步骤的操作:
第一步:打开PowerPoint,依次点击插入/图表插入一张图表幻灯片,此时会PowerPoint会自动插入一个图表的实例,别管它,直接点击工具栏上的编辑/导入文件,就会弹出一个输入数据选项对话框(如图1),选择需要制成图片的工作表。如果只需要导入工作表的一部分内容,单击选定区域前面的单选按钮,并在后面的文本框中输入要导入的区域。例如,我们要导入工作表中的前两列(整个工作表有10条数据),可以这样表示A1:B10。这里有一点需要注意,选定区域必须是连续的单元格或行列,最后勾选覆盖现有单元格的内容,点击确定按钮即可。
图1
第二步: 当我们按照上述方法导入数据以后可能发现幻灯片中的图表和我们要求的相距甚远,如所有的柱状图都收缩到一起了(如图2),这就需要我们适当调整。通过观察可以发现,数据表中的A列前面有一个列,这是用来显示坐标轴的数据用的,将其选中后单击菜单编辑/删除将它删除,为了使数据系列正好显示在图表正中,然后我们还应该在数据表中删除多余的空行。然后单击菜单数据/列中系列,让图表按列分类显示,怎么样,整体效果已经出来了吧(如图3)!
图2
图3
二、 在Excel与PowerPoint数据表之间建立链接
上面的操作是将Excel中的数据直接复制到了幻灯片中的数据表中,以后改变Excel中的数据,图表幻灯片也不会跟着改变,那如何才能使图表随着Excel数据的改变而随时改变呢,我们可以通过在Excel与PowerPoint数据表之间建立链接的方法来实现,这样当源数据改变时,能够马上在图表幻灯片中显示出来,具体操作步骤如下:
首先在Excel中选择要与PowerPoint中数据表建立连接的数据范围,单击菜单编辑/复制。
然后新建一个PPT文档,点击插入/图表插入一张图表幻灯片,并清空弹出来的数据表输入框中所有的数据,再单击菜单编辑/粘贴链接,此时Excel中的数据就会出现在数据表中了,其它操作方法和第一种一样。
以后如果我们在Excel中更改数据,则PowerPoint中数据表中的数据也相应的改变,同时图表也跟着改变。利用上面两种方法可以免去我们重复输入之苦,有这方面需要的朋友不妨试一试。
提示:这种超链接的图表方法要求不能更改Excel文档和与之对应的PPT文档的路径,否则PPT文档就不会跟随Excel文件的修改而时时更新数据了。
计算是指进行公式运算,然后在包含此公式的单元格中以数值形式显示出运算结果的过程。在一般情况下,当在单元格中输入一个公式时,如果相关的单元格已经准备好数据,则Excel将自动计算出结果,并显示在单元格中;如果相关的单元格没有准备好数据,则Excel将在单元格中显示0。
实际上,可以将工作表Tulaoshi.Com设定为人工重算模式,以便在输入工作表时,提高数据的输入速度。设置手动计算的步骤如下:
(1)执行工具菜单中的选项命令,出现选项对话框。
(2)单击重新计算选项卡,出现如图7-10所示的对话框。
(3)选定其中的人工重算,按下确定按钮。
将屏幕截图插入到Excel2013中的方法很多,很多人肯定都是用QQ截图将图片截取下来,然后再将图片插入进去。其实我们要来介绍的是一种更加简单快速的方法。
①启动Excel2013,单击菜单栏--插入--插图--屏幕截图。
②然后在下拉菜单中选择屏幕剪辑。
③这时会自动跳转到桌面,我们开始截图。
④截取完毕,图片自动插入到Excel2013中了。而且相比QQ截图,这样截图不会改变原有图片的像素。
在Word2010文档中创建超链接时,链接地址不仅仅可以指向网页,还可以指向包括Word文档、Excel文件等在内的任意文件。不过只有链接向本机程序支持的文件,才能在点击超链接时打开该文件。在Word2010文档中创建链接向指定文件超链接的步骤如下所述:
第1步,打开Word2010文档窗口,选中需要创建超链接的文字。切换到插入功能区,在链接分组中单击超链接按钮,如图1所示。
图1 单击超链接按钮第2步,在打开的插入超链接对话框中,链接到区域保持选中所有文件或网页选项。然后单击查找范围下拉三角按钮,查找并选中链接目标文件,单击确定按钮即可,如图2所示。
图2 插入超链接对话框
我们经常使用Excel的工作表保护功能,将工作表用密码保护起来,以防别人操作时进行修改,但是这样一来有可能会无法进行一些操作(如输入公式等),时间久了保护的密码也有可能忘记了,这该怎么办呢?只要按照以下步骤操作,Excel工作表保护密码瞬间即破!
1、打开您需要破解保护密码的Excel文件;
2、依次点击菜单栏上(www.tulaoshi.com)的工具---宏----录制新宏,输入宏名字如:aa;
3、停止录制(这样得到一个空宏);
4、依次点击菜单栏上的工具---宏----宏,选aa,点编辑按钮;
5、删除窗口中的所有字符(只有几个),替换为下面的内容;
从横线下开始复制-----------------------------
Option Explicit
Public Sub AllInternalPasswords()
' Breaks worksheet and workbook structure passwords. Bob McCormick
' probably originator of base code algorithm modified for coverage
' of workbook structure / windows passwords and for multiple passwords
'
' Norman Harker and JE McGimpsey 27-Dec-2002 (Version 1.1)
' Modified 2003-Apr-04 by JEM: All msgs to constants, and
' eliminate one Exit Sub (Version 1.1.1)
' Reveals hashed passwords NOT original passwords
Const DBLSPACE As String = vbNewLine & vbNewLine
Const AUTHORS As String = DBLSPACE & vbNewLine & _
"Adapted from Bob McCormick base code by" & _
"Norman Harker and JE McGimpsey"
Const HEADER As String = "AllInternalPasswords User Message"
Const VERSION As String = DBLSPACE & "Version 1.1.1 2003-Apr-04"
Const REPBACK As String = DBLSPACE & "Please report failure " & _
"to the microsoft.public.excel.programming newsgroup."
Const ALLCLEAR As String = DBLSPACE & "The workbook should " & _
"now be free of all password protection, so make sure you:" & _
DBLSPACE & "SAVE IT NOW!" & DBLSPACE & "and also" & _
DBLSPACE & "BACKUP!, BACKUP!!, BACKUP!!!" & _
DBLSPACE & "Also, remember that the password was " & _
"put there for a reason. Don't stuff up crucial formulas " & _
"or data." & DBLSPACE & "Access and use of some data " & _
"may be an offense. If in doubt, don't."
Const MSGNOPWORDS1 As String = "There were no passwords on " & _
"sheets, or workbook structure or windows." & AUTHORS & VERSION
Const MSGNOPWORDS2 As String = "There was no protection to " & _
"workbook structure or windows." & DBLSPACE & _
"Proceeding to unprotect sheets." & AUTHORS & VERSION
Const MSGTAKETIME As String = "After pressing OK button this " & _
"will take some time." & DBLSPACE & "Amount of time " & _
"depends on how many different passwords, the " & _
"passwords, and your computer's specification." & DBLSPACE & _
"Just be patient! Make me a coffee!" & AUTHORS & VERSION
Const MSGPWORDFOUND1 As String = "You had a Worksheet " & _
"Structure or Windows Password set." & DBLSPACE & _
"The password found was: " & DBLSPACE & "$$" & DBLSPACE & _
"Note it down for potential future use in other workbooks by " & _
"the same person who set this password." & DBLSPACE & _
"Now to check and clear other passwords." & AUTHORS & VERSION
Const MSGPWORDFOUND2 As String = "You had a Worksheet " & _
"password set." & DBLSPACE & TuLaoShi.com"The password found was: " & _
DBLSPACE & "$$" & DBLSPACE & "Note it down for potential " & _
"future use in other workbooks by same person who " & _
"set this password." & DBLSPACE & "Now to check and clear " & _
"other passwords." & AUTHORS & VERSION
Const MSGONLYONE As String = "Only structure / windows " & _
"protected with the password that was just found." & _
ALLCLEAR & AUTHORS & VERSION & REPBACK
Dim w1 As Worksheet, w2 As Worksheet
Dim i As Integer, j As Integer, k As Integer, l As Integer
Dim m As Integer, n As Integer, i1 As Integer, i2 As Integer
Dim i3 As Integer, i4 As Integer, i5 As Integer, i6 As Integer
Dim PWord1 As String
Dim ShTag As Boolean, WinTag As Boolean
Application.ScreenUpdating = False
With ActiveWorkbook
WinTag = .ProtectStructure Or .ProtectWindows
End With
ShTag = False
For Each w1 In Worksheets
ShTag = ShTag Or w1.ProtectContents
Next w1
If Not ShTag And Not WinTag Then
MsgBox MSGNOPWORDS1, vbInformation, HEADER
Exit Sub
End If
MsgBox MSGTAKETIME, vbInformation, HEADER
If Not WinTag Then
MsgBox MSGNOPWORDS2, vbInformation, HEADER
Else
On Error Resume Next
Do 'dummy do loop
For i = 65 To 66: For j = 65 To 66: For k = 65 To 66
For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66
For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66
For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126
With ActiveWorkbook
.Unprotect Chr(i) & Chr(j) & Chr(k) & _
Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & _
Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
If .ProtectStructure = False And _
.ProtectWindows = False Then
PWord1 = Chr(i) & Chr(j) & Chr(k) & Chr(l) & _
Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _
Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
MsgBox Application.Substitute(MSGPWORDFOUND1, _
"$$", PWord1), vbInformation, HEADER
Exit Do 'Bypass all for...nexts
End If
End With
Next: Next: Next: Next: Next: Next
Next: Next: Next: Next: Next: Next
Loop Until True
On Error GoTo 0
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/ejc/)End If
If WinTag And Not ShTag Then
MsgBox MSGONLYONE, vbInformation, HEADER
Exit Sub
End If
On Error Resume Next
For Each w1 In Worksheets
'Attempt clearance with PWord1
w1.Unprotect PWord1
Next w1
On Error GoTo 0
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/ejc/)ShTag = False
For Each w1 In Worksheets
'Checks for all clear ShTag triggered to 1 if not.
ShTag = ShTag Or w1.ProtectContents
Next w1
If ShTag Then
For Each w1 In Worksheets
With w1
If .ProtectContents Then
On Error Resume Next
Do 'Dummy do loop
For i = 65 To 66: For j = 65 To 66: For k = 65 To 66
For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66
For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66
For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126
.Unprotect Chr(i) & Chr(j) & Chr(k) & _
Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _
Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
If Not .ProtectContents Then
PWord1 = Chr(i) & Chr(j) & Chr(k) & Chr(l) & _
Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _
Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
MsgBox Application.Substitute(MSGPWORDFOUND2, _
"$$", PWord1), vbInformation, HEADER
'leverage finding Pword by trying on other sheets
For Each w2 In Worksheets
w2.Unprotect PWord1
Next w2
Exit Do 'Bypass all for...nexts
End If
Next: Next: Next: Next: Next: Next
Next: Next: Next: Next: Next: Next
Loop Until True
On Error GoTo 0
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/ejc/)End If
End With
Next w1
End If
MsgBox ALLCLEAR & AUTHORS & VERSION & REPBACK, vbInformation, HEADER
End Sub
----------------------
复制到横线以上
6、关闭编辑窗口;
7、依次点击菜单栏上的工具---宏-----宏,选AllInternalPasswords,运行,确定两次;
在公司、学校,经常会遇到需要在Excel录入身份证号的场景,但录入完毕会发现身份证号成了科学统计法,再次点击发现最后三位成了0,这个如何解决呢?
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/ejc/)规规矩矩的输入18位数字
最后三位成了0
究其原因,就是Excel目前最多支持15位数字,超过的数字全部默认为0,解决方法很简单,将格式由数值改为文本。因为身份证号作为一串固定的数字并没有运算需求,应该归属于规规矩矩的文本。
方法一:先在表格中输入英文半角的’号(冒号后面那个键),其作用就是将该表格项的属性改为文本。
方法二:如果一时记不起先输入哪个符号的话,有个更通用的方法,在工具栏下拉格式列表,点击最下方的文本就行了。
方法三:在选定的单元格右键,选择设置单元格格式,在数字标签中选择文本后点击确定即可。
来源:http://www.tulaoshi.com/n/20160401/2078132.html
看过《Excel单元格数据特殊处理实例》的人还看了以下文章 更多>>