常用E8函数

 
Function E8_Parameters(name, rng)  '参数表
'查找参数表返回对应值,代替常规设置名称,简化操作
    Set E8_Parameters = rng.Columns(1).Find(what:=name, LookAt:=xlWhole).Offset(0, 1)
End Function
Function E8_UsedRange(sht As Worksheet) '通过最大行来确定使用区域 系统使用区域有时候不准
    Dim endrow, endCol
    On Error Resume Next
    Set E8_UsedRange = Nothing
    endrow = sht.Cells.Find("*", sht.Cells(1, 1), xlValues, xlWhole, xlByRows, xlPrevious).Row '计算最后一个非空行号
    endCol = sht.Cells.Find("*", sht.Cells(1, 1), xlValues, xlWhole, xlByColumns, xlPrevious).Column '计算最后一个非空列号
    Set E8_UsedRange = sht.Range(sht.[A1], sht.Cells(endrow, endCol))
End Function
Function E8_MaxRange(rng As Range, Optional col = "") As Range '某一起始行区域往下延展的最大 默认按所有列最大行 也可指定参考列
    Dim endrow  'E8_MaxRange([A1:D1],"D").Select
    If col = "" Then col = rng.EntireColumn.Address
    endrow = rng.Columns(col).EntireColumn.Cells.Find("*", rng.Columns(col)(1), xlValues, xlWhole, xlByRows, xlPrevious).Row  '计算工作表的最后一个非空行号
    Set E8_MaxRange = rng.Resize(endrow - rng(1).Row + 1)
End Function
Public Function E8_LastRow(rng As Range) '返回rng所在列的最后行数
    Dim rmax&
    rmax = ActiveSheet.Rows.Count
    E8_LastRow = rng.Worksheet.Cells(rmax, rng.Column).End(xlUp).Row
End Function
Function E8_InStrlist(s, slist) '在一串字符串中检测是否存在
    Dim e
    InStrlist = False
    For Each e In slist
        If InStr(UCase(s), UCase(e)) > 0 Then
            E8_InStrlist = True
            Exit Function
        End If
    Next
End Function
Function E8_Rnd(min, max) '随机返回指定区间的实数
    E8_Rnd = Int((max - min + 1) * Rnd + min)
End Function
Sub E8_Vlookup(r待查 As Range, r源 As Range, r输出 As Range, 结果列, Optional keyCol = 1)
''EXCEL880 QQ80871835 淘宝https://item.taobao.com/item.htm?id=540422380533
'代替Vlookup完成精确查找功能 直接输出源数据中查到的第一列结果果 避免表内公式重复计算
'r输出只需要写起始第一行 结果列数要输出的数据在r源的列号数组如 [{2,3,4}]
 'E8_Vlookup [sheet2!A2:A416865], [sheet1!A1:B966026], [sheet2!B2], [{2}]
    Dim arr, brr, crr, i&, j&, k&, kdic&
    arr = r待查.Value
    brr = r源.Value
    Dim dic
    Set dic = CreateObject("scripting.dictionary")
    For i = 1 To UBound(brr)
        If Not dic.exists(brr(i, keyCol)) And brr(i, keyCol) <> "" Then   '第一次遇到不存在key则加入字典 记录数据源行号
            dic.Add brr(i, keyCol), i
        End If
    Next
    '对比字典查找结果
    crr = r输出.Resize(UBound(arr)).Value
    For i = 1 To UBound(arr)
        If dic.exists(arr(i, 1)) Then
            kdic = dic(arr(i, 1))
            For j = 1 To UBound(结果列)
                crr(i, j) = brr(kdic, 结果列(j))
            Next
        Else
            For j = 1 To UBound(结果列)
                crr(i, j) = ""
            Next
        End If
    Next
    r输出.Resize(UBound(arr)) = crr
End Sub
Sub RngCopyFormat(rng As Range, rngtarget As Range) '复制格式
    rng.Copy
    rngtarget.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = xlCopy
End Sub


  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

豪情云天

您的鼓励就是创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值