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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Отработка данных при наличии ключевой цифры

Ответить
Настройки темы
VBS/WSH/JS - Отработка данных при наличии ключевой цифры

Новый участник


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

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


Здравствуйте, форумчане!
Обращаюсь к Вам за помощью.
Собрал скрипт 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

Отправлено: 08:41, 02-09-2021

 

Новый участник


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

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


Мне банально надо заменять эти значения, которые 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;;;

Отправлено: 09:54, 02-09-2021 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


Чтобы не громоздить столько условий, может, есть какой-нибудь более общий принцип изменения значения?

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 10:18, 02-09-2021 | #3


Новый участник


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

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


Да нет, я всё думал, но это самый идеальный вариант. Т.е. можно легко силами девочки офис-менеджера добавить или убавить, ну или изменить))))

Отправлено: 10:33, 02-09-2021 | #4


Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


Может потому, что 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 :

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

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

Отправлено: 10:57, 02-09-2021 | #5


Новый участник


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

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


Да нет, все правильно, почему то в этом скрипте (vbs), у меня все поля на одно вправо сдвинулись.
Pwsh это хорошо, но у меня там скрипт на vbs

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


Ветеран


Contributor


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

Профиль | Отправить 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



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Отработка данных при наличии ключевой цифры

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
2003/XP/2000 - Excel - Краш при вводе любой цифры в ячейку DiamonDz Microsoft Office (Word, Excel, Outlook и т.д.) 22 23-03-2019 19:42
[решено] Тормозит система при загрузке ОС при наличии Касперского и летает без него A_kitten Лечение систем от вредоносных программ 4 04-09-2013 16:57
Зависание при загрузке Windows 7 при наличии двух дисков (с одним - ОК) sawabarton Microsoft Windows 7 11 02-03-2013 22:49
Windows Home Server лишилась ключевой особенности OSZone News Новости и события Microsoft 0 26-11-2010 05:30
Как понимать две цифры в ячейке Скорость передачи данных, Кбит/с? united Хочу все знать 16 03-11-2008 01:21




 
Переход