ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] [求助] 查找条件批量插入表格求助

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-5-7 22:48 | 显示全部楼层 |阅读模式

求助大神
     数百个类似格式文件需要批量查找C列在对应单元格内容为1009时插入条件区部分内容;
B列空白值位置填充1009行B单元格内容
image.png

原文件

原文件

条件区

条件区
3.png

测试p.rar

26.54 KB, 下载次数: 16

TA的精华主题

TA的得分主题

发表于 2023-5-8 08:40 | 显示全部楼层
插入到1009、1018、1023是依据什么条件呢?是你们来指定?

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-8 09:30 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
my0745 发表于 2023-5-8 08:40
插入到1009、1018、1023是依据什么条件呢?是你们来指定?

1009内容是唯一的;类似查找D列内容是1009的行,在此行后插入 条件文本里的内容;(最好可以指定插入条件文本里的行数,例如插入第1-3行)

TA的精华主题

TA的得分主题

发表于 2023-5-8 10:36 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
haichuan5121 发表于 2023-5-8 09:30
1009内容是唯一的;类似查找D列内容是1009的行,在此行后插入 条件文本里的内容;(最好可以指定插入条件 ...

我的意思是,1009是怎么来的,你现在只提供了1009、1018和1023,以后还会不会有1024,1055什么的

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-8 15:17 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
my0745 发表于 2023-5-8 10:36
我的意思是,1009是怎么来的,你现在只提供了1009、1018和1023,以后还会不会有1024,1055什么的

目前就三组关键数吧最大的话可能会有四组不会很多;除了这个插入也可能会有替换关键字这一行的需求;比如我搜到1009行后,把1009整行替换为条件格式里面对应的含1009的行;

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-24 09:19 | 显示全部楼层
下面的代码能完美执行想要的结果 ,但仅支持XLSX文件,XLS的不支持 大哥给看下怎么修改啊
<# :

echo on & setlocal EnableDelayedExpansion

for /f "delims=" %%i in ('"dir /a/s/b/on 元数据*.*"') do (

set file=%%~fi

set file=!file:/=/!

echo !file! >> files1.txt

)
powershell -noprofile -NoLogo "iex (${%~f0} | out-string)"
pause
#>
function get-data([int]$startrow, [int]$startcol, [int]$endrow, [int]$endcol, [string]$pat, [string[]]$files1, [string[]]$files2) {
        foreach ($file2 in $files2) {
    $excel = New-Object -ComObject Excel.Application
    $excel.Visible = $false
    $wb = $excel.Workbooks.Open($file2)
    $ws = $wb.Sheets.Item(1)
    $sr = $ws.Range($ws.Cells.Item($startrow, $startcol), $ws.Cells.Item($endrow, $endcol))
    $sd = $sr.Value2
    $found = $false
    foreach ($file1 in $files1) {
        $dwb = $excel.Workbooks.Open($file1)
        $dws = $dwb.Sheets.Item(2)
        $fc = $dws.UsedRange.Find($pat)
        if ($fc -ne $null) {
            $found = $true
            $rown = $fc.Row
            for ($i = 0; $i -le $endrow-$startrow; $i++) {
                $dws.Rows.Item($rown + 1).EntireRow.Insert()
            }
            $dsr = $dws.Range($dws.Cells.Item($rown + 1, $startcol), $dws.Cells.Item($rown + 1 + ($endrow - $startrow), $endcol))
            $dsr = $dsr.Resize($sr.Rows.Count, $sr.Columns.Count)
            $dsr.Value2 = $sd
            $sr.Copy()
            $dsr.PasteSpecial(-4122)
            for ($i = 1; $i -le $dsr.Rows.Count; $i++) {
                # $val = $dsr.Cells.Item($i, 1).Offset(-1, 0)
                # $dsr.Cells.Item($i, 1).Value2 = $val.Value2
            }
            for ($i = 1; $i -le $dsr.Rows.Count; $i++) {
                $val = $dsr.Cells.Item($i, 4).Offset(-5, 0)
                $dsr.Cells.Item($i, 4).Value2 = $val.Value2
            }
            $dwb.Close($true)
            Start-Sleep -Milliseconds 500
            break
        }
        $dwb.Close($true)
        Start-Sleep -Milliseconds 500
    }
if (!$found) {
    Write-Host "Pattern $pat not found in any file."
} else {
    $excel.DisplayAlerts = $false
    $wb.Close($false)
    $excel.Quit()
    [Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null
    }
        }
}

$files1 = Get-Content "files1.txt"

$files2 = Get-Content "files2.txt"

get-data -startrow 1 -startcol 2 -endrow 4 -endcol 9 -pat 12100 -files1 $files1 -files2 $files2
get-data -startrow 6 -startcol 2 -endrow 8 -endcol 9 -pat 1011 -files1 $files1 -files2 $files2
get-data -startrow 10 -startcol 2 -endrow 11 -endcol 9 -pat 1013 -files1 $files1 -files2 $files2
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-29 18:40 , Processed in 0.022512 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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