首页 > 解决方案 > 对于下一个循环失败:将 Col A(表 1)中的值匹配到 Col A(表 2),然后匹配列

问题描述

我尝试使用在另一个工作簿中找到的代码来适应我的情况,但是在运行时,它不返回任何值。将不胜感激有关如何挽救这一点的任何见解。

目标:构建一个矩阵来显示每个度量并为其使用的维度标记一个“X”。

矩阵表中的 A 列有一个度量列表。随后的列(Col B、C 等)都是维度。

FTD 表中的 Col A 也是一个措施列表,但它们重复了。Col B 是每个度量的对应维度的列表。(与 MATRIX 表中的列名相同)

目标是将 Col A、MATRIX 表中的度量与 > Col A、FTD 表相匹配。如果在 FTD 表中找到,则应检查该度量的相应维度,在 MATRIX 表的列中找到它,并在相应列下标记“X”。

注意:两张表中的尺寸是相同的类型/格式等(它们都来自相同的来源)

Matrix Sheet:

COL A          DIMENSION A(Cost)      DIMENSION B(Hours Worked)    Hours Forecast  Accounts Receivable   Location 
Measure 1          x                            x                              x 
Measure 2          x                                                           x 
Measure 3                                       x
Measure 4          x                                                           x                             x
FTD Sheet:


COL A         COL B
Measure 1     DIMENSION A(Cost) 
Measure 1     Hours Worked
Measure 1     Hours Forecast 
Measure 2     Accounts Receivable
Measure 2     Location
Measure 3     Location

下面的代码:

Public Sub ltdsol()


Set sht = Worksheets("Matrix")
Set sht2 = Worksheets("FTD")
MATRIXLastRow = sht.Cells(sht.Rows.Count, 1).End(xlUp).Row
FTDLastrow = sht2.Cells(sht2.Rows.Count, 1).End(xlUp).Row
For i = 2 To MATRIXLastRow
    ' Find the row with a matching Case ID/Client Name
    For k = 2 To FTDLastrow
        If sht.Cells(k, 1).Value = sht2.Cells(i, 1).Value Then _
            Exit For
    Next

    q = 3 ' Starting column for Questions, look for a matching question/header (or blank)
    Do Until sht2.Cells(1, q).Value = sht.Cells(i, 3).Value Or sht2.Cells(1, q).Value = vbNullString
        q = q + 1
    Loop


    ' Write the Response
    sht2.Cells(k, q).Value = "X"
Next

End Sub

将不胜感激任何帮助。谢谢你。

标签: excelvbaloopsfor-loopmatrix

解决方案


推荐阅读