我在Excel中有两张纸。目标是从一张纸上获取评级并将其制作成另一张纸上的表格。我需要创建一个代码,可以搜索每个部门名称的第一个工作表上的列,然后对于每个搜索结果,它会从搜索结果的同一行中的不同列中获取值,并将该值放入单元格中在表格上。
示例:第一张图片设置有点像这样但有更多数据
Department Rating Category Rating
CM RX1.1 FI
CM RX1.2 FI
PPQA RX1.1 LI
PPQA RX1.4 NI
所以我需要做的是创建一个循环,搜索Department列并获取与搜索相同的行中的评级,并将其导入另一张表格中的表格。
其他工作表的输出示例:
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
谢谢