八宝书库 > 文学其他电子书 > Excel word ppt office使用技巧大全(DOC格式) >

第36部分

Excel word ppt office使用技巧大全(DOC格式)-第36部分


按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!






相反观点:数据透视表的计算是excel 中内置的,同样的计算次数速度与数组公式是一样的, 

数组公式计算慢有两个因素,一是公式的编写不合理,另一个主要的原因是数组公式要对所有 

的引用数据进行计算,不管这些数据是否有效。  

VBA应该是最灵活的,在VBA 中结合数组公式是可以达到最佳目的的,可用VBA先分析出数组 

公式要用的有效引用区域,在辅助表中进行数组计算(这个速度比用VBA直接分析计算要快得 

多),再将结果记入需要的单元格中,然后删除辅助表。  

其实你说的那些基本操作均可用VBA来做的,速度比手工做要快。  

010。从式子抽取一小式子的问题?   

b1=sum(a1:a10)+(10+20)/4;怎么从中取出(10+20)/4或其结果(即5)?用evaluate 、get。cell 

都不能取出。  

解答:定义X=get。formula(B 1)得到B1的公式;再用MID、Right等函数截取  

011。or可以用数组应用?   

有一个工作表,数据上万行,其中一列是我要分析的数值,数值比如为:0111,0112,0113, 

0114,0115,0116,0117中的任何一个。我要统计除0111,0113,0115之外的数据。公式: 

{sum(if(or(sheet!A2:A1111=〃0111〃;sheet!a2:a1111=〃0113〃;sheet!a2:a1111=〃0115〃);1;0)) 

};可是统计数字和我筛选相加的不一样,用if层层选,可以。请问原因?   

解答:数组公式中用*、+代替AND 、OR    

{sum(if((sheet!A2:A1111=〃0111〃)+(sheet!a2:a1111=〃0113〃)+(sheet!a2:a1111=〃0115〃);1; 

0))}    

012。countif表达式的格式  

请问:我想找A1 :A15 中,值不为空的数目,用countif命令怎么写呢?   

解答1:应为counta(a1:a15) 。countif为找a1:a15 中,特定值的数目。  

解答2:=ROWS(A1:A15)*COLUMNS(A1:A15)…COUNTIF(A1:A15;〃〃)    

=ROWS(A1:A15)*COLUMNS(A1:A15)…COUNTBLANK(A1:A15)    

解答3:直接用count(a1:a15)不是更好吗!   

013。删除字符串中某个字符的函数是什么?删除字符串中某个字符的函数是什么?   

举例:字符串“i love you a!〃想删除a字面,应该用什么函数实现?还有就是在字符串中某个位 

置加入某个字符用什么函数呢?   

解答:如果有一定的规律,可以用Replace函数。例如:在A1单元格已有的字符串”123467〃中 

加入个5变为“ 1234567”。可以这样做:=replace(a1;5;;〃5〃)    

另一方法:用CONCATENATE函数。  

例如:a5单元格里的数据是“asdfhjkl〃;在另外的单元格了输入下面的函数  

CONCATENATE(LEFT(A5;4);〃l〃;RIGHT(A5;4)) ,得到的结果就是”asdflhjkl〃;然后用“选择性粘 

贴,粘贴数值”粘贴回a5单元格就可以了。  

014。两表合一实例  

问题提出:怎样把两个表(有相同的字段)怎样合并成一个表?   

思路:用CountIf()函数对表1进行判断,如果其值为0,则表示没以重复,再将表2中和表1不 

重复的数据复制到表1中,从而实现两表合一。  

解题的方法:   

Sub dd()    



                                 CCXXVIII  


…………………………………………………………Page 229……………………………………………………………

                                    Excel_word_ppt_使用技巧大全(完全版)  



b = Sheets(2)。'a1'。CurrentRegion。Rows。Count + 1    

〃判断表2的行数  

For i = 3 To b    

a = Sheets(1)。'a1'。CurrentRegion。Rows。Count + 1    

〃判断表1的行数  

c = Sheets(2)。'a1'。CurrentRegion。Columns。Count    

〃判断表2的列数  

If Application。WorksheetFunction。CountIf(Sheets(1)。'b1:b1000'; Sheets(2)。Cells(i; 2)) =  0  

Then    

Sheets(2)。Range(Sheets(2)。Cells(i; 1); Sheets(2)。Cells(i; c))。Copy Sheets(1)。Cells(a; 1)    

〃将表2中与表1不重复的数据复制到表1中  

End If    

Next    

End Sub    

015。有没有办法把加载宏内置到Excel文件里?   

因为用了 Networkdays  函数,用到了分析工具库,但是还要发给别人,怎么办?   

解答:试试在〃Thisworkbook〃中写如下语句:   

Private Sub Workbook_Open()    

Application。RegisterXLL Filename:= _    

〃Office安装路径OfficeLibraryAnalysisANALYS32。XLL〃    

End Sub    

又问:Office安装路径怎么写呀?大家不一定都装在C盘上。  

解答:试试:Application。Path & 〃LibraryAnalysisANALYS32。XLL〃    

046。如何在userform上显示最大化与最小化按钮  

解答:   

利用API    

Option Explicit    

Private  Declare  Function  GetWindowLong  Lib  〃user32〃  Alias  〃GetWindowLongA〃  (ByVal  

hWnd As Long; ByVal nIndex As Long) As Long    

Private Declare Function FindWindow Lib 〃user32〃 Alias 〃FindWindowA〃 (ByVal lpClassName  

As String; ByVal lpWindowName As String) As Long    

Private Declare Function SetWindowLong Lib 〃user32〃 Alias 〃SetWindowLongA〃 (ByVal hWnd  

As Long; ByVal nIndex As Long; ByVal dwNewLong As Long) As Long    

Private Const GWL_STYLE = (…16)   

Private Const WS_THICKFRAME As Long = &H40000 '(恢复大小)    

Private Const WS_MINIMIZEBOX As Long = &H20000 '(最小化)    

Private Const WS_MAXIMIZEBOX As Long = &H10000 '(最大化)    

Private Sub UserForm_Initialize()    

Dim hWndForm As Long    

Dim IStyle As Long    

hWndForm = FindWindow(〃ThunderDFrame〃; Me。Caption)    

IStyle = GetWindowLong(hWndForm; GWL_STYLE)    



                                               CCXXIX  


…………………………………………………………Page 230……………………………………………………………

                                      Excel_word_ppt_使用技巧大全(完全版)  



IStyle = IStyle Or WS_THICKFRAME '还原   

IStyle = IStyle Or WS_MINIMIZEBOX '最小化   

IStyle = IStyle Or WS_MAXIMIZEBOX '最大化   

SetWindowLong hWndForm; GWL_STYLE; IStyle    

End Sub    

017。这个判断代码怎么写  

在A列输入日期,如果所输入日期为1月1 日或5月1 日则B列相关单元格+1;其他日期+0;这要用 

到什么函数?代码怎么写?谢谢!   

解答:用IF函数或用Worksheet_Change事件  

Private Sub Worksheet_Change(ByVal Target As Range)    

If Target。Column = 1 Then    

If IsDate(Target) Then    

If (Month(Target) = 1 And Day(Target) = 1) Or (Month(Target) = 5 And Day(Target) = 1)  

Then    

Target。Offset(0; 1) = Target。Offset(0; 1) + 1    

End If    

End If    

End If    

End Sub    

018。这个汇总表拆分程序怎么写,高手帮忙!   

要将总表里的数据按工作单位字段拆分成数个分表(每个单位一张表格,标签名字为工作单位) 

这个程序怎么编写,请高手指点。如果记录增多或字段增多(但拆分字段不增)这个程序又应 

该怎样改写,请高手稍微讲解一下,应为我不是为这一个表,还想用到别的工作表中,谢谢!   

解答:Sub Add_data(sht_Name) '找出要取资料的区域   

Dim i As Integer; j As Integer; row_d As Integer    

Dim First_row As Integer; Last_row As Integer    

On Error Resume Next    

With Sheets(〃总表〃)    

i = 1    

Do Until 。Cells(i; 3)。value = sht_Name    

i = i + 1    

Loop    

First_row = i    

j = First_row    

Do Until 。Cells(j; 3)  sht_Name    

j = j + 1    

Loop    

Last_row = j  1   

End With    

Sheets(〃总表〃)。Range(Cells(First_row; 1); Cells(Last_row; 12))。Select    

Selection。Copy    



                                                  CCXXX  


…………………………………………………………Page 231……………………………………………………………

                                     Excel_word_ppt_使用技巧大全(完全版)  



Sheets(sht_Name)。Select    

Range(〃A2〃)。Select    

ActiveSheet。Paste    

With ActiveSheet    

row_d = 。Range(〃A2〃)。End(xlDown)。Row + 1    

Range(〃B〃 & row_d)。value = 〃合计〃    

For i = 5 To 11    

Cells(row_d; i)。value = Application。WorksheetFunction。Sum(Range(Cells(2; i); Cells(row_d  

1; i)))   

Next i    

End With    

Sheets(〃总表〃)。Activate    

Range(〃A2〃)。Select    

End Sub    

020。这个公式应该怎么写?   

我想统计所有物料编码的第一个字符为a的库存数量的总和,这个公式应该怎么写?A列为物 

料编码;B列为库存数量。  

解答:=SUMIF(A:A;〃a*〃;B:B)   

021。样修改此宏?   

下面的宏是k版主帮我写的,从文件夹内汇入其他工作表表格。汇入范围为第五行、第L列。  

如汇入范围改为第三行、第R列。  

怎样修改此宏?   

Public Sub Feed_in2()    

Dim Row_dn; Row_dn1; i; j; k; m As Integer    

Dim Path1; Str1 As String    

Dim wb As Workbook    

Row_dn = 'B65536'。End(xlUp)。Row    

Path1 = Application。ActiveWorkbook。Path    

Str1 = ActiveWorkbook。Name    

k = 5    

With Application    

。EnableEvents = False   

。ScreenUpdating = False   

If Row_dn 》= 5 Then    

Range(〃B5:L〃 & Row_dn)。ClearContents    

End If    

With 。FileSearch    



                                                 CCXXXI  


…………………………………………………………Page 232……………………………………………………………

                                      Excel_word_ppt_使用技巧大全(完全版)  



。NewSearch   

。LookIn = Path1   

。FileType = msoFileTypeExcelWorkbooks   

If 。Execute 

返回目录 上一页 下一页 回到顶部 0 0

你可能喜欢的