0

我被困在以下要求的编码中。

我有两个 excel(xls) 文件(新旧用户列表)。在每个文件中有 4 个字段“用户 ID”、“用户名”、“成本中心”、“审批经理”。现在,我需要检查新用户列表中的每个用户 ID 是否存在于旧用户列表中。如果是,我必须复制/将新用户列表中“成本中心”和“审批经理”的值替换为旧用户列表中相同列的值。如果此条件失败,则突出显示新用户列表中“userid”的整行,旧用户列表中没有相应的匹配记录,最后不是最后但至少我们必须保存新用户列表。大约有2000多个用户ID

下面,我开始编码以将用户 ID 列表从新用户列表中获取到一个数组中。将对旧用户列表执行相同的操作。从那里开始,我该如何修改新用户列表,就像我上面解释的那样?

$objExcel = new-object -comobject excel.application
$UserWorkBook = $objExcel.Workbooks.Open("O:\UserCert\New_Users.xls")
$UserWorksheet = $UserWorkBook.Worksheets.Item(1)
$OldUsers = @()
$intRow = 2 #starting from 2 since i have to exclude the header

do {
$OldUsers = $UserWorksheet.Cells.Item($intRow, 1).Value()
$intRow++
} while ($UserWorksheet.Cells.Item($intRow,1).Value() -ne $null)

任何帮助非常感谢...

4

1 回答 1

0

如果每个列表中的用户 ID 以某种常规顺序排列,那么应该很容易同时打开两个工作簿,维护 2 个指针(Row_for_old_userlist 和 Row_for_new_userlist)并将新用户 ID 的内容与旧用户 ID 的内容进行比较。

如果它们没有某种顺序,那么对于新用户列表中的每个项目,您必须扫描整个旧用户列表以找到它们,然后采取行动。

我不确定以 CSV 格式保存是满足您要求的有效方法 - 您可能无法以这种方式获取数据。

但是 - 我认为你真的在问如何设置 Excel 电子表格单元格的值。

如果是这样,这是我用来将缺陷列表插入电子表格的一些代码......然后将最后一个单元格的列 A 设置为不同的颜色。奇怪的是,“价值2”部分......这是不可协商的。不要问我为什么它是“value2”,但它是。

for ($x=0; $x -lt $defects.count; $x++)
    {
    $row++
    [string] $ENGIssue = $defects[$x]
    $sheet.Cells.Item($row,1).value2 = $ENGIssue
    }
$range = $sheet.range(("A{0}" -f $row), ("B{0}" -f $row))
$range.select() | Out-Null
$range.Interior.ColorIndex=6
于 2013-06-21T21:06:51.327 回答