南柯一新梦
码龄5年
关注
提问 私信
  • 博客:9,110
    问答:96
    视频:2
    9,208
    总访问量
  • 6
    原创
  • 1,258,481
    排名
  • 151
    粉丝
  • 0
    铁粉

个人简介:煎和熬都是变美味的方式,加油也是!

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:山东省
  • 加入CSDN时间: 2019-12-16
博客简介:

NanKelgz的博客

查看详细资料
个人成就
  • 获得16次点赞
  • 内容获得8次评论
  • 获得33次收藏
  • 代码片获得554次分享
创作历程
  • 6篇
    2023年
成就勋章
兴趣领域 设置
  • Python
    python
  • 微软技术
    sql
  • 行业数字化
    制造
  • 非IT技术
    程序人生学习
  • IT工具
    excel
创作活动更多

2024 博客之星年度评选报名已开启

博主的专属年度盛宴,一年仅有一次!MAC mini、大疆无人机、华为手表等精美奖品等你来拿!

去参加
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

超实用Excel VBA工具箱4-验证身份证号码有效性

身份证信息处理是我们将遇到的需求,其中一个就是对于身份证号码有效性的验证。有一次我妻子学校让班主任核对学生提交的家庭成员身份证信息的准确性。按之前的方式,全班几十个学生,挨个家长打电话,一遍下来半天也就没了。这还不算电话打不通的,打通了身份证号记不住的。于是我就给她做了身份证号有效性识别的功能。先程序核对一遍,剩下的只是确认身份证证号无效的,这样效率一下就提高了几十倍。
原创
发布博客 2023.06.25 ·
1241 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

身份证有效性识别_edit

发布视频 2023.06.25

身份证有效性识别_edit

发布视频 2023.06.25

超实用Excel VBA工具箱3-创建动态目录

工作中我们可能会经常使用一个工作簿,这个工作簿里有各种不同的工作表。我们需要煤炭在不同的工作表里处理不同的信息,这是我们可能为工作簿创建一个动态的工作表目录,通过点击不同目录中的链接跳转到我们需要的工作表。
原创
发布博客 2023.06.24 ·
423 阅读 ·
2 点赞 ·
0 评论 ·
1 收藏

超实用Excel VBA工具箱2-拆分合并的单元格并填充原值

在我的上一篇文章《超实用Excel VBA工具箱1-合并内容相同的单元格》中,介绍了“同类合并”的功能。这次介绍它的逆需求,我称它为“带值拆分”。例如,我们需要计算每个部门员工的平均工资,但很多时候我们得到的数据是表1这样的格式,那么我们需要首先将表一转换为表2。也就是说,要将取消单元格合并,并将原先合并单元格中的值填充到每一个被拆分出的单元格中。
原创
发布博客 2023.06.23 ·
1714 阅读 ·
2 点赞 ·
4 评论 ·
9 收藏

超实用Excel VBA工具箱1-拆分合并的单元格并填充原值

发布资源 2023.06.23 ·
xlsm

超实用Excel VBA工具箱1-合并内容相同的单元格

工作中,我们有时会遇到这样一种需求,需要将某一列中内容相同的单元格进行合并。例如下图中,需要将相同的部门进行合并,由表1转换为表2。如果你需要经常处理这种需求,就可以自定义一个功能放到Excel的自定义功能区里。
原创
发布博客 2023.06.22 ·
2757 阅读 ·
5 点赞 ·
2 评论 ·
9 收藏

超实用Excel VBA工具箱1-合并内容相同的单元格

发布资源 2023.06.22 ·
xlsm

vbs窗口怎样做到不可关闭

答:

通过窗体的UserForm_QueryClose事件可以设置。

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode = 0 Then Cancel = 1
End Sub

当CloseMode的值为0(vbFormControlMenu)时,表示用户点击了“关闭”按钮。Cancel=1也可以写成Cancel=True,表示关闭操作被取消,即用户点击关闭也没用,因为点了就被取消操作了,从而实现用户禁止关闭窗体。

回答问题 2023.06.21

Excel表格中在有算式的情况下求和

答:

因为单元格中的值实际是文本不能直接计算,所以你需要将里面的数值提取出来。

=LEFT(A1,FIND("*",A1)-1)*MID(A1,FIND("*",A1)+1,1000000)+LEFT(B1,FIND("*",B1)-1)*MID(B1,FIND("*",B1)+1,1000000)+LEFT(C1,FIND("*",C1)-1)*MID(C1,FIND("*",C1)+1,1000000)
  1. 判断的位置
    考虑你不一定全是1位数✖1位数,所以需要先获取乘号"
    "的位置。需要用的Find函数。
    FIND(find_text, within_text, [start_num])

    • find_text 必需。 要查找的文本。
    • within_text 必需。 包含要查找文本的文本。
    • start_num 可选。 指定开始进行查找的字符。 within_text 中的首字符是编号为 1 的字符。 如果省略 start_num,则假定其值为 1。
      公式和结果如下:

      img

  2. 提取数值
    得到每个字符串中的具体位置后我们就可以根据这个位置提取数值了。
    首先提取
    前面的值,用的Left函数
    LEFT(text, [num_chars])

  • 文本 必需。 包含要提取的字符的文本字符串。
  • num_chars 可选。 指定要由 LEFT 提取的字符的数量。
    • Num_chars 必须大于或等于零。
    • 如果 num_chars 大于文本长度,则 LEFT 返回全部文本。
    • 如果省略 num_chars,则假定其值为 1。
  • Num_bytes 可选。 按字节指定要由 LEFTB 提取的字符的数量。
    公式和结果如下:

    img

然后提取*后面的数值,用到Mid函数
MID(text, start_num, num_chars)。

  • 文本 必需。 包含要提取的字符的文本字符串。
  • start_num 必需。 文本中要提取的第一个字符的位置。 文本中第一个字符的 start_num 为 1,以此类推。
      - 如果start_num大于文本长度,则 MID/MIDB 返回空文本 (") 。
      - 如果start_num小于文本长度,**但 start_num 加 num_chars 超过文本长度,则 MID/MIDB 将返回直到文本末尾的字符。**
      - 如果start_num小于 1,则 MID/MIDB 返回#VALUE! 错误值。
    
  • num_chars MID 必需。 指定希望 MID 从文本中返回字符的个数。
      - 如果num_chars为负数,则 MID 返回#VALUE! 错误值。
      - Num_bytes    MIDB 必需。 指定希望 MIDB 从文本中返回字符的个数(字节数)。
      - 如果num_bytes为负数,则 MIDB 返回#VALUE! 错误值。
    
    公式和结果如下:

    img

3.创建计算公式
接下来就简单了,拿到了所有的数值,重新写计算公式就行了。
公式和结果如下:

img

公式合并结果如下

img

=LEFT(A1,FIND("*",A1)-1)*MID(A1,FIND("*",A1)+1,1000000)+LEFT(B1,FIND("*",B1)-1)*MID(B1,FIND("*",B1)+1,1000000)+LEFT(C1,FIND("*",C1)-1)*MID(C1,FIND("*",C1)+1,1000000)
回答问题 2023.06.21

请问为啥这个vba循环在第二次报错

答:

问题在“range(cells(b(1)*1000-988,2),cells(b(1)*1000+1,21))”这一句里。因为这里的cells前面没有限定工作表。如果没有指定工作表,cells默认的工作表是激活的工作表。第一次运行的时候你应该是在sheet2,这时sheet2里是有你的数据的。后面你新建的工作表,激活的工作表(activesheet)已经不是sheet2了,而是你新建的工作表,再从激活的工作表里取值都是空的,所以第二次运行的时候cells(b(1)*1000-988的结果应该是一个负数,所以就报错了。
正确的代码:

For b(1)=1to a(1) Step 1
      Sheet2.Range(Sheet2.Cells(b(1)*1000-988,2),Sheet2.Cells(b(1)*1000+1,21)).Copy
      Sheets.add
      Activesheet.Paste Cells(2,2)
Next

或者

With Sheet2
    For b(1)=1to a(1) Step 1
        .Range(.Cells(b(1)*1000-988,2),.Cells(b(1)*1000+1,21)).Copy
        Sheets.add
        Activesheet.Paste Cells(2,2)
    Next
End With

回答问题 2023.06.21

RibbonXMLEditor_8.0工具使用介绍

此款RibbonXMLEditor是一款绿色面安装的Ribbon自定义功能区XML编辑软件。软件是俄文的,但是可视化做的非常好,完全不会因为语言问题影响使用。这款编辑器是我很早之前在一个Excel论坛上下载的,一直沿用至今,非常好用。
原创
发布博客 2023.06.20 ·
2300 阅读 ·
4 点赞 ·
0 评论 ·
9 收藏

RibbonXMLEditor-8.0

发布资源 2023.06.20 ·
rar

超实用Excel VBA工具箱0-零基础学代码其实很简单

发布资源 2023.06.17 ·
xlsm

超实用Excel VBA工具箱0-零基础学代码其实很简单

从零基础学习Excel VBA,开发适合自己的工具,开始学习,永远不晚!
原创
发布博客 2023.06.17 ·
623 阅读 ·
2 点赞 ·
2 评论 ·
2 收藏

水浒传108将人物绰号座次天罡地煞表

发布资源 2022.03.26 ·
xlsx

水浒传108将人物绰号座次天罡地煞表

发布资源 2022.03.26 ·
sql
加载更多