Как сместить всю строку - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть таблица, в которой строки состоят из имен, а ось Y имеет категории.Каждая строка имеет номера от 1 до 5, заполненные под определенными столбцами.Я разрабатываю макрос, в котором я могу получить соответствие для позиции столбца на основе номера строки и номера (1-5), которые я ищу

Прямо сейчас, несмотря на то, на каком номере строки я нахожусьЯ получаю положение столбцов, основываясь на значениях в первой строке.Я мог пытаться найти в 3-й строке, но я получаю соответствующие цифры для первой строки

Может кто-нибудь сказать мне, как убедиться, что мой диапазон смещен на новую строку

Sub StructurePivot2()
Dim X As Variant, Var As Double, P As Integer, Z As Integer, ws As Worksheet, rng3 As Range, category As Variant, rng As Range, cell As Variant, i As Integer, rng2 As Range
Set ws = Worksheets("Sheet1")
Set rng = Worksheets("Sheet1").Range("A2:A173")
Set rng2 = Worksheets("Sheet1").Range("B2:AI2")
Set rng3 = rng2.offset(P)
P = 0

For Each cell In rng
    Set rng3 = rng2.Offset(P)
    For i = 1 To 5
        Z = Application.WorksheetFunction.Match(i, rng3, 0)
        Worksheets("Sheet2").Range("A3").Offset(P, 3) = Z
        P = P + 1
    Next i
Next cell
End Sub

1 Ответ

0 голосов
/ 19 февраля 2019

Вероятно, проблема в том, что P увеличивается во внутреннем цикле и никогда не перезапускается обратно до 0. Что касается ошибки рассогласования, то это потому, что совпадение не найдено.Таким образом, попробуйте повернуть назад P на 0 для каждого cell и записать rng3.Address в ближайшее окно Ctrl + G , чтобы увидеть, где находится ошибка:

For Each cell In Rng
    For i = 1 To 5
        Set rng3 = rng2.Offset(P)
        Debug.Print rng3.Address
        Z = Application.WorksheetFunction.Match(i, rng3, 0)
        Worksheets("Sheet2").Range("A3").Offset(P, 3) = Z
        P = P + 1
    Next i
    P = 0
Next cell
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...