Скопируйте данные на лист с именем в заголовке столбца и ячейке с именем в начале строки, затем выполните цикл - PullRequest
1 голос
/ 30 мая 2019

У меня есть некоторые производственные данные в таблице на рабочем листе Source.В заголовке каждого столбца находится имя рабочего листа, куда должны быть вставлены данные в этом столбце.В столбце A в начале каждой строки находится столбец назначения на рабочем листе назначения;и в столбце B - строка назначения.Столбец C объединяет их, чтобы отобразить имя ячейки, например, T138, которое будет ячейкой назначения на рабочих листах назначения.Я не был участником достаточно долго, чтобы встроить изображение в этот пост, но здесь есть фотография таблицы:

https://i.stack.imgur.com/7bGch.png

Таким образом, каждый элемент на рабочем листе источникабыть скопирован и затем вставлен в рабочую таблицу с именем в заголовке столбца и в ячейку с именем в столбце C в начале строки (или, альтернативно, в столбце с именем Col.A и в строке с именем Col.B) ЗатемСкрипт должен пройти через все остальные ячейки данных и сделать то же самое для каждой из них: скопировать данные, вставить на лист, указанный в заголовке столбца, и ячейку, указанную в начале строки в столбце Col.C.

Несмотря на то, что я новичок, я действительно думал, что это будет довольно просто.Но я не смог понять, как это сделать.Я пробовал разные сценарии, но ни один из них даже не начал делать свою работу, и они действительно даже не стоят показывать здесь.Я надеялся, что кто-то может указать мне правильное направление.Хуже того, ни один из моих обширных поисков не дал ничего похожего на то, что я хочу сделать.Возможно я просто не использовал правильные условия поиска.«Переменная», похоже, наиболее близка к пригодным для поиска результатам, но не совсем.

Любая помощь будет принята с благодарностью.

Вот изображение того, как выглядит один из листов назначения, в соответствующей части:

https://i.stack.imgur.com/Tu4KL.png

Вот лучшее изображение:

https://i.stack.imgur.com/eHmBt.png

1 Ответ

0 голосов
/ 30 мая 2019

Добро пожаловать в переполнение стека.Обычно вопросы должны иметь «Минимально проверяемый воспроизводимый пример» проблемы, с которой вы столкнулись.Этот вопрос более читается как «Как мне это сделать» и, как правило, не принимается сообществом.

Пожалуйста, прочтите это -> https://stackoverflow.com/help/minimal-reproducible-example

Этолучший ответ, который я могу придумать, я не профессиональный парень VBA, и ваш вопрос был немного расплывчатым.Если вы хотите получить больше отзывов / изменений по отдельным частям / проблемам с этим ответом, я бы предложил написать отдельный вопрос / сообщение для каждой части, но не стесняйтесь комментировать с отзывами, и я могу настроить свой ответ, поскольку мне нравится изучать этот материал.

Вот то, что у меня есть на данный момент.

Этот код будет проходить по каждой ячейке в диапазоне от G3 до J и LastRow.Копирование ячейки, если она числовая, на лист на основе заголовка столбца и ячейки из столбца C.

Public Sub MoveData()
Dim rcell As Range, rng As Range

LastRow = ActiveSheet.UsedRange.Rows.Count + ActiveSheet.UsedRange.Rows(1).Row - 1
'MsgBox LastRow

Set rng = Application.ActiveSheet.Range("G3:J" & LastRow)

For Each rcell In rng.Cells
    If Not Len(rcell.Value) = 0 Then

        'MsgBox rcell.Value
        Header = rcell.Offset(1 - rcell.Row).Value
        'MsgBox Header
        Set DestSheet = ThisWorkbook.Sheets(Header)
        Set DestCell = ActiveSheet.Range("C" & rcell.Row)
        'MsgBox DestCell

        Application.ActiveSheet.Range(rcell.Address).Copy Destination:=Sheets(Header).Range(DestCell)
    End If
Next rcell

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...