VBA для умножения на основе значения ячейки на ячейку в другом листе - PullRequest
0 голосов
/ 07 ноября 2019

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

У нас есть разные значения в столбце «G», которые относятся к разным материалам, например: «MS», «SS», «ANGLE», «PURCHASED»

Проблема, с которой я столкнулся, заключается в создании «общей стоимости» в столбце «J» на основе материала в «G». Если значение равно «MS», то значение в столбце «J» должно быть количеством x единица массы x стоимость материала.

«Количество» - это значение в столбце C, «единица массы» - это значение в столбце. E и «материальные затраты» - это всегда ячейка H5 на листе с именем «MASTER» (отсюда и следует использовать столбец общей стоимости J)

Sub subMultiply()

    For Each Cel In Range("G2:D" & Cells(Rows.Count, "G").End(xlUp).Row)
        If Cel.Value = "MS" Then
            Cel.Offset(0, 3).Value = Cel.Offset(0, -2).Value * ThisWorkbook.Sheets(MASTER).Range(H5).Value * Cel.Offset(0, -4).Value
        ElseIf Cel.Value = "PURCHASED" Then
            Cel.Offset(0, 3).Value = Cel.Offset(0, -3).Value * ThisWorkbook.Sheets(MASTER).Range(H6).Value * Cel.Offset(0, -4).Value
        End If
    Next
End Sub

Ответы [ 2 ]

0 голосов
/ 08 ноября 2019

'' '

    Firstrow = .UsedRange.Cells(1).Row
    lastrow = .UsedRange.Rows(.UsedRange.Rows.Count).Row

    For lRow = lastrow To Firstrow Step -1


        Set ws2 = ThisWorkbook.Sheets("MASTER")

        With .Cells(lRow, "G")

            If Not IsError(.Value) Then

                If .Value Like ("*MS*") Then Cells(lRow, "D").Value = Cells(lRow, "E").Value * ws2.Range("H5").Value

' '' Мне удалось добавить еще один оператор If для каждого типа материала

0 голосов
/ 07 ноября 2019

Вы должны попробовать использовать функцию select case

SO, например:

Select Case Cells(i, 7)

    Case Is = "MS"
        Cells(i, 10) = 3

    Case Is = "SS"
        Cells(i, 10) = 5

    Case Is = "ANGLE"
        Cells(i, 10) = 8

    Case Is = "PURCHASED"
        Cells(i, 10) = 11
End Select

Вместо цифр (3,5,8 и11), которые я использовал длямой тест, вы можете использовать все, что вы хотите.

Вы можете использовать функцию листов для выбора листов: Листы ("MASTER"). Ячейки (5,8) это H5 на MasterЛисты. Пример: Sheets("Sheet2").Cells(1, 1).Select

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