ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1506|回复: 21

[已解决] 符合条件的内容按要求写入文本

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-6-3 11:50 | 显示全部楼层 |阅读模式
本帖最后由 天地一相 于 2023-6-4 08:31 编辑

感谢帮助!详见截图附件。本求助代码要放入一个循环100次的宏循环代码里,需要在首次宏循环时执行新建打开文本的操作,还需要在第100次宏循环后保存关闭文本。
文本写入.PNG

写文本.rar

7.05 KB, 下载次数: 12

TA的精华主题

TA的得分主题

发表于 2023-6-3 12:23 | 显示全部楼层
Option Explicit
Sub TEST1()
    Dim ar, br, i&, r&, strJoin$
   
    ar = Range("H3", Cells(Rows.Count, "H").End(xlUp))
    br = [Q3].CurrentRegion
    For i = 1 To UBound(ar)
        If ar(i, 1) = 4 Then
            r = r + 1
            ar(r, 1) = br(i, 1) & "-" & br(i, 2) & "-" & br(i, 3) & "=" & br(i, 4) & "," & br(i, 5) & "," & br(i, 6) & "/" & br(i, 7)
            strJoin = strJoin & vbCrLf & ar(r, 1)
        End If
    Next i
    If strJoin <> "" Then
         Open ThisWorkbook.Path & "\ " & [H2].Value & ".txt" For Output As #1
             Print #1, Mid(strJoin, 3)
         Close #1
    End If
    Beep
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-6-3 17:28 | 显示全部楼层
本帖最后由 天地一相 于 2023-6-3 17:30 编辑
gwjkkkkk 发表于 2023-6-3 12:23
Option Explicit
Sub TEST1()
    Dim ar, br, i&, r&, strJoin$

谢谢!还没测,先看了一遍代码,貌似没有设置循环初始的语句。如,运行30遍重新开始,第1次运行,新建文本,第30次运行结束,保存关闭文本。然后开始新的30遍运行。在一个30遍循环中,每一遍都会有内容写入文本,不覆盖,接着最后一行写入。我求助时假设5遍循环,我找半天没看到与5相关的句子。可能我猜错了。行号固定到50000.

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-6-3 17:45 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
gwjkkkkk 发表于 2023-6-3 12:23
Option Explicit
Sub TEST1()
    Dim ar, br, i&, r&, strJoin$

谢谢,测试了单次的,结果是对的,秒速!没办法处理循环操作的情况。

TA的精华主题

TA的得分主题

发表于 2023-6-3 17:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Option Explicit
Sub TEST1()
    Dim ar, br, i&, r&, strJoin$
   
    ar = Range("H3", Cells(Rows.Count, "H").End(xlUp))
    br = [Q3].CurrentRegion
    For i = 1 To UBound(ar)
        If ar(i, 1) = 4 Then
            r = r + 1
            ar(r, 1) = br(i, 1) & "-" & br(i, 2) & "-" & br(i, 3) & "=" & br(i, 4) & "," & br(i, 5) & "," & br(i, 6) & "/" & br(i, 7)
            strJoin = strJoin & vbCrLf & ar(r, 1)
        End If
    Next i
    If strJoin <> "" Then
         Open ThisWorkbook.Path & "\ " & [H2].Value & ".txt" For Output As #1
             For i = 1 To 5
                  Print #1, Mid(strJoin, 3)
             Next i
         Close #1
    End If
    Beep
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-6-3 17:48 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
gwjkkkkk 发表于 2023-6-3 12:23
Option Explicit
Sub TEST1()
    Dim ar, br, i&, r&, strJoin$

不对,再仔细检查,单次的保存结果是错的,似乎是出现错行了。谢谢

TA的精华主题

TA的得分主题

发表于 2023-6-3 17:48 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-6-3 17:57 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
gwjkkkkk 发表于 2023-6-3 12:23
Option Explicit
Sub TEST1()
    Dim ar, br, i&, r&, strJoin$

好像是R列到U列的数据在获取时都有错位,提取的正确位置上放第2个单元格的内容

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-6-3 18:08 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
gwjkkkkk 发表于 2023-6-3 17:48
代码审核中,这样吗?

我测试发现有错位情况会不会是因为我实际运行的行数有60000行的原因?谢谢

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-6-3 18:24 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 天地一相 于 2023-6-4 08:36 编辑
gwjkkkkk 发表于 2023-6-3 17:48
代码审核中,这样吗?

谢谢,还是搞不定。请看看附件,里面有我的想法。

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-16 09:48 , Processed in 0.043559 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表