热门关键字:  总结  实习  工作  报告  打印机
当前位置 :| 首页>设备维护>

EXCEL常见问题五十问题解答

来源: 作者: 时间:2006-10-15 点击:

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()
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安装路径\Office\Library\Analysis\ANALYS32.XLL"
End Sub
又问:Office安装路径怎么写呀?大家不一定都装在C盘上。
解答:试试:Application.Path & "\Library\Analysis\ANALYS32.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)
  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
    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)

上一页 1 23 4 5 下一页
最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册
赞助商链接