Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Contributor


Сообщения: 2728
Благодарности: 1697

Профиль | Отправить PM | Цитировать


Technik_spat, Если нумерацию полей начинать с 0, то изменяемое поле - это 5, а индикатор изменения - 9.
Код: Выделить весь код
MRe = Array("0.083000", "0.084000", _
            "0.133000", "0.134000", _
            "0.142000", "0.143000", _
            "0.166000", "0.167000", _
            "0.221000", "0.223000", _
            "0.222000", "0.223000", _
            "0.284000", "0.286000", _
            "0.285000", "0.286000", _
            "0.332000", "0.334000", _
            "0.333000", "0.334000", _
            "0.427000", "0.429000", _
            "0.428000", "0.429000", _
            "0.498000", "0.501000", _
            "0.499000", "0.501000", _
            "0.666000", "0.667000")

MsgBox ReStr("98;2100076544175;Сармат-мол;0;0;0.166000;;1;;0;;;", ";", 5, 9, MRe)
MsgBox ReStr("113;2100076594188;Форман-Лоп;0;0;0.142000;;1;;3;;;", ";", 5, 9, MRe)
MsgBox ReStr("116;2100076500005;Сократ-Бетон;0;0;0.166000;;1;;2;;;", ";", 5, 9, MRe)

Function ReStr(s, d, ix, ii, Mas)
    a = Split(s, d)
    ReStr = s
    If a(ii) = "0" Then
        For i = LBound(Mas) To UBound(Mas) Step 2
            If Mas(i) = a(ix) Then
                ReStr = RePlace(s, a(ix), Mas(i + 1))
                Exit For
            End If
        Next
    End If
End Function
Более наглядный вариант
Код: Выделить весь код
MRe = Array("0.083000", "0.084000", _
            "0.133000", "0.134000", _
            "0.142000", "0.143000", _
            "0.166000", "0.167000", _
            "0.221000", "0.223000", _
            "0.222000", "0.223000", _
            "0.284000", "0.286000", _
            "0.285000", "0.286000", _
            "0.332000", "0.334000", _
            "0.333000", "0.334000", _
            "0.427000", "0.429000", _
            "0.428000", "0.429000", _
            "0.498000", "0.501000", _
            "0.499000", "0.501000", _
            "0.666000", "0.667000")

Dan = Array("98;2100076544175;Сармат-мол;0;0;0.166000;;1;;0;;;", _
            "113;2100076594188;Форман-Лоп;0;0;0.142000;;1;;3;;;", _
            "214;2100076594001;Фордзон-Путиловец;0;0;0.427000;;1;;0;;;", _
            "215;2100076594002;Братья Райт;0;0;0.428000;;1;;0;;;", _
            "216;2100076594003;Фсякая Фигня;0;0;0.666000;;1;;0;;;", _
            "116;2100076500005;Сократ-Бетон;0;0;0.166000;;1;;2;;;")

M = ""
For j = LBound(Dan) To UBound(Dan)
    M = M + Dan(j) + vbCrLf + ReStr(Dan(j), ";", 5, 9, MRe) + vbCrLf + vbCrLf
Next

MsgBox M

Function ReStr(s, d, ix, ii, Mas)
    a = Split(s, d)
    ReStr = s
    If a(ii) = "0" Then
        For i = LBound(Mas) To UBound(Mas) Step 2
            If Mas(i) = a(ix) Then
                ReStr = RePlace(s, a(ix), Mas(i + 1))
                Exit For
            End If
        Next
    End If
End Function

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 02-09-2021 в 12:26.

Это сообщение посчитали полезным следующие участники:

Отправлено: 11:30, 02-09-2021 | #7