Technik_spat
02-09-2021, 08:41
Здравствуйте, форумчане!
Обращаюсь к Вам за помощью.
Собрал скрипт VBS, всё отлично работает, но, есть небольшая загвоздка: так и не смог победить вот этот отрезок. Хочу, что бы он работал, только если в поле 9 стоит цифра 0 , а то он сейчас всё подряд гоняет.
Подскажите, пожалуйста, какой командой можно это отрегулировать в этих полях?
If aa(7) = "0.666000" Then
aa(7) = "0.667000" & aa(7)
End If
If aa(7) = "0.166000" Then
aa(7) = "0.167000" & aa(7)
End If
If aa(7) = "0.133000" Then
aa(7) = "0.134000" & aa(7)
End If
If aa(7) = "0.083000" Then
aa(7) = "0.084000" & aa(7)
End If
If aa(7) = "0.221000" Then
aa(7) = "0.223000" & aa(7)
End If
If aa(7) = "0.222000" Then
aa(7) = "0.223000" & aa(7)
End If
If aa(7) = "0.333000" Then
aa(7) = "0.334000" & aa(7)
End If
If aa(7) = "0.332000" Then
aa(7) = "0.334000" & aa(7)
End If
If aa(7) = "0.666000" Then
aa(7) = "0.667000" & aa(7)
End If
If aa(7) = "0.142000" Then
aa(7) = "0.143000" & aa(7)
End If
If aa(7) = "0.285000" Then
aa(7) = "0.286000" & aa(7)
End If
If aa(7) = "0.284000" Then
aa(7) = "0.286000" & aa(7)
End If
If aa(7) = "0.666000" Then
aa(7) = "0.667000" & aa(7)
End If
If aa(7) = "0.428000" Then
aa(7) = "0.429000" & aa(7)
End If
If aa(7) = "0.427000" Then
aa(7) = "0.429000" & aa(7)
End If
If aa(7) = "0.498000" Then
aa(7) = "0.501000" & aa(7)
End If
If aa(7) = "0.499000" Then
aa(7) = "0.501000" & aa(7)
End If
Technik_spat
02-09-2021, 09:54
Мне банально надо заменять эти значения, которые If aa(7) = "0.142000" Then в этих строках, на значения aa(7) = "0.143000" & aa(7) , но только при наличии в столбце 9 цифры 0
Т.е.
98;2100076544175;Сармат-мол;0;0;0.166000;;1;;0;;;
113;2100076594188;Форман-Лоп;0;0;0.142000;;1;;3;;;
116;2100076500005;Сократ-Бетон;0;0;0.166000;;1;;2;;;
Т.е. в конце строки будут выглядить вот так:
98;2100076544175;Сармат-мол;0;0;0.167000;;1;;0;;;
113;2100076594188;Форман-Лоп;0;0;0.142000;;1;;3;;;
116;2100076500005;Сократ-Бетон;0;0;0.166000;;1;;2;;;
Сейчас это выглядит в конце вот так:
98;2100076544175;Сармат-мол;0;0;0.167000;;1;;0;;;
113;2100076594188;Форман-Лоп;0;0;0.143000;;1;;3;;;
116;2100076500005;Сократ-Бетон;0;0;0.167000;;1;;2;;;
DJ Mogarych
02-09-2021, 10:18
Чтобы не громоздить столько условий, может, есть какой-нибудь более общий принцип изменения значения?
Technik_spat
02-09-2021, 10:33
Да нет, я всё думал, но это самый идеальный вариант. Т.е. можно легко силами девочки офис-менеджера добавить или убавить, ну или изменить))))
DJ Mogarych
02-09-2021, 10:57
Может потому, что 0 у вас не в 9 столбце, а в 10? Некоторые условия у вас дублируются.
А некоторые можно совместить, т.к. конечные значение одинаковые.
Привожу пример для Powershell (VBS не знаю)
98;2100076544175;Сармат-мол;0;0;0.166000;;1;;0;;;
113;2100076594188;Форман-Лоп;0;0;0.143000;;1;;3;;;
116;2100076500005;Сократ-Бетон;0;0;0.167000;;1;;2;;;
99;2100076544173;Аристотель-Арматура;0;0;0.285000;;1;;0;;;
97;2100076544174;Платон-Цемент;0;0;0.284000;;1;;0;;;
$csv = Import-Csv "C:\temp\бетон.csv" -Encoding default -Delimiter ';' -Header 1,2,3,4,5,6,7,8,9,10,11,12
$csv |% {
if ($_.10 -eq 0) {
if ($_.6 -eq '0.166000') {$_.6 = "0.167000"}
elseif ($_.6 -match '^0\.28[45]000') {$_.6 = "0.286000"}
}
}
$csv
1 : 98
2 : 2100076544175
3 : Сармат-мол
4 : 0
5 : 0
6 : 0.167000
7 :
8 : 1
9 :
10 : 0
11 :
12 :
1 : 113
2 : 2100076594188
3 : Форман-Лоп
4 : 0
5 : 0
6 : 0.143000
7 :
8 : 1
9 :
10 : 3
11 :
12 :
1 : 116
2 : 2100076500005
3 : Сократ-Бетон
4 : 0
5 : 0
6 : 0.167000
7 :
8 : 1
9 :
10 : 2
11 :
12 :
1 : 99
2 : 2100076544173
3 : Аристотель-Арматура
4 : 0
5 : 0
6 : 0.286000
7 :
8 : 1
9 :
10 : 0
11 :
12 :
1 : 97
2 : 2100076544174
3 : Платон-Цемент
4 : 0
5 : 0
6 : 0.286000
7 :
8 : 1
9 :
10 : 0
11 :
12 :
Technik_spat
02-09-2021, 11:30
Да нет, все правильно, почему то в этом скрипте (vbs), у меня все поля на одно вправо сдвинулись.
Pwsh это хорошо, но у меня там скрипт на vbs
megaloman
02-09-2021, 11:30
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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.