gpt4 book ai didi

powershell - PowerShell中的Vlookup

转载 作者:行者123 更新时间:2023-12-02 23:18:53 27 4
gpt4 key购买 nike

我需要此vlookup代码在PowerShell中工作。

=VLOOKUP(A1,File_2.csv!$B:$C,2,false)

基本上,我有2个CSV,我需要从File_2.CSV(第二列)的特定列中检索数据,并将其插入File_1.CSV中的新列中。

文件_1.csv
ID   NAME--- ------1    Alpha2    Bravo3    Charlie

File_2.csv

ID   STATUS---  -------1    Active2    Inactive3    Active

Expected Result

ID   NAME     STATUS---  ------   ------- 1   Alpha    Active 2   Bravo    Inactive 3   Charlie  Active

My Code as follows:

#Initiate Excel
$path = Get-Location
$excel = New-Object -ComObject Excel.Application
$excel.Visible = $false
$workbook = $excel.Workbooks.Open("$path\file_1.csv")
$worksheet = $workbook.Worksheets.Item(1)

#Add new column
$worksheet.Cells.Item(1, 3) = "Status"

#count column of A1
$colCountA1 = $worksheet.Range("A1").CurrentRegion.Rows.Count

#Setformula vlookup
$vlookup = "=VLOOKUP(B2,File_2.csv!`$B:`$C,2,false)"

#Add formula from C2 to Total Count of A1
$worksheet.Range("C2:C$colCountA1").Formula = $vlookup

$workbook.Close($false)
$excel.Quit()

目前的结果是:

ID名称状态
-------- -------
1个Alpha #NAME?
2 Bravo #NAME?
3查理#NAME?

但是当我在Excel中手动输入 vlookup公式时,它可以正常工作。不知道我在哪里弄错了。

最佳答案

将其中一个CSV读取到将ID映射到值的哈希表中:

$data = @{}
Import-Csv 'File_2.csv' | ForEach-Object { $data[$_.ID] = $_.STATUS }

然后使用 calculated property将这些值作为新字段添加到其他CSV数据中:
Import-Csv 'File_1.csv' |
Select-Object *, @{n='STATUS';e={if ($data.Contains($_.ID)) {$data[$_.ID]} else {'N/A'}}}

如果需要将结果以CSV格式传送到 Export-Csv中。

关于powershell - PowerShell中的Vlookup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57568501/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com