1

我有两张excel表格。目标是从一张纸上获取评级并将其放入另一张纸上的表格中。我需要编写一个代码,该代码可以通过第一张纸上的一列搜索每个部门名称,然后对于它找到的每个搜索结果,从与搜索结果相同的行中的不同列中获取值并将该值放在一个单元格中在表工作表上。

示例:第一张表的设置有点像这样,但数据更多

Department     Rating Category    Rating
   CM               RX1.1           FI
   CM               RX1.2           FI
  PPQA              RX1.1           LI
  PPQA              RX1.4           NI

所以我需要做的是创建一个循环来搜索部门列并在与搜索相同的行中获取评级并将其导入另一张表上的表中。

其他工作表的输出示例:

      RX1.1  RX1.2  RX1.3  RX1.4
CM      FI    FI     N/A    N/A
PPQA    LI    N/A    N/A    NI
ETC.    N/A   N/A    N/A    N/A
ETC.    N/A   N/A    N/A    N/A

我知道我必须编写 if 语句以确保数据进入正确的单元格。我可以弄清楚。我只需要帮助在一个列中搜索一个字符串,并在不同的列中获取字符串的值,但与搜索的字符串在同一行。

我有相当多的编程经验,主要是java,但我对VBA有点陌生,所以任何帮助都将不胜感激。

编辑:

在搞砸了一段时间后,这就是我到目前为止所得到的。请注意,我是 VBA 的新手,我只是按照我认为它们现在可以工作的方式进行尝试。我敢肯定,有更多实用的方法可以解决我想要做的事情,所以任何建议都会很棒。

Sub MainCode()

'Call defineProAreaArr
'Dim arrCount As Integer
'Dim Result As Variant
Set r = Worksheets("Summary all PIIDB")
With r
    'For M = 0 To 19
        Call FindEntryArea
End With
End Sub


Sub FindEntryArea()

Dim EntryCell As Variant
Dim x As String
With Worksheets("Summary all PIIDB").Range("T:T")
    Set d = .Find("REQM", LookIn:=xlFormulas, LookAt:=xlWhole)
    Set x = Worksheets("Summary all PIIDB").Range.Cells(d.Row, 2).Value
End With
Dim eRow As Integer 'Entry Row
Dim eCol As Integer 'Entry Column
Dim WrongRow As Boolean
If Worksheets("Summary all PIIDB").Cells(d.Row, 19).Value = 0 Then
    WrongRow = True
    MsgBox "Area not valid"
    Exit Sub
End If
eRow = Worksheets("CHART").Range("A2:A21").Find("REQM", LookIn:=xlValues, LookAt:=xlWhole).Row
eCol = Worksheets("CHART").Range("B1:AG1").Find(x, LookIn:=xlValues, LookAt:=xlWhole).Column
Worksheets("CHART").Cells(eRow, eCol) = Worksheets("Summary all PIIDB").Cells(d.Row, 19).Formula
End Sub

做这个还很早。一旦我让 FindEntryArea() 工作,将添加一个循环来搜索所有部门和所有部门。

截至目前,我不断收到 Object Required 错误:

Set x = Worksheets("Summary all PIIDB").Range.Cells(d.Row, 2).Value

谢谢你

4

0 回答 0