Поиск по таблице

echoragaq

Client
Регистрация
14.08.2018
Сообщения
11
Благодарностей
0
Баллы
1
Ребят, очень нужна помощь

Есть таблица http://prntscr.com/kxza0h
мне нужно найти номера всех строк с user1, как это сделать?
 

j2082192

Client
Регистрация
10.01.2016
Сообщения
83
Благодарностей
14
Баллы
8

echoragaq

Client
Регистрация
14.08.2018
Сообщения
11
Благодарностей
0
Баллы
1
https://zennolab.com/discussion/threads/poisk-v-tablice-jachejki-i-zapis-v-stroku-ehtoj-jachejki.15812/
12 сообщение
кубик даст номер строки потом просто берешь его и записываешь куда нужно
У меня есть подобный кубик уже, но его проблема в том, что он ищет всеголишь одну строку , а мне нужны все
 

j2082192

Client
Регистрация
10.01.2016
Сообщения
83
Благодарностей
14
Баллы
8
может сделать еще один столбец и пронумеровать строки так чтоб совпадало с номерами строк
потом фильтрануть столб B upload_2018-9-24_12-7-49.png
upload_2018-9-24_12-4-43.png

и будет норм
 

echoragaq

Client
Регистрация
14.08.2018
Сообщения
11
Благодарностей
0
Баллы
1
может сделать еще один столбец и пронумеровать строки так чтоб совпадало с номерами строк
потом фильтрануть столб B Посмотреть вложение 32388 Посмотреть вложение 32387
и будет норм
Как сделать в екселе мне известно, нужно чтобы я в зенке мог написать скрипт, который на основе совпадений будет выдавать данные
 

SergSh

Client
Регистрация
10.05.2017
Сообщения
541
Благодарностей
395
Баллы
63
искать должен в одной колонке? если совпадение, то класть в список номер строки? покажи свой кубик
 

SergSh

Client
Регистрация
10.05.2017
Сообщения
541
Благодарностей
395
Баллы
63
Код:
var tbl = project.Tables["tablica"];
var lst = project.Lists["spisok"];
for(int i=0; i < tbl.RowCount; i++)
{
        string u = tbl.GetCell("B",i); //В колонке "B"   
        if(u.Contains(user1)) lst.Add(i.ToString()); //Если обнаружило user1 кладем номер строки в список
  
}
 

echoragaq

Client
Регистрация
14.08.2018
Сообщения
11
Благодарностей
0
Баллы
1
искать должен в одной колонке? если совпадение, то класть в список номер строки? покажи свой кубик


Код:
// берем из переменной текст, который надо искать
var textContains = project.Variables["tablesearch"].Value;
// получаем таблицу, в которой будем искать
var sourceTable = project.Tables["facebook"];
// ищем в каждой строчке в таблице
lock(SyncObjects.TableSyncer)
{
    for(int i=0; i < sourceTable.RowCount; i++)
        {
          

        // читаем строку из таблицы (это будет массив ячеек)
        var cells = sourceTable.GetRow(i).ToArray();
          
        // пройдем в цикле по всем ячейкам
        for (int j=0; j < cells.Length; j++)
            {
                // проверяем содержание текста в ячейке, если есть совпадение возвращаем "yes"
                if (cells[j].Contains(textContains)){
                  
                     // После того как найдено первое совпадение, получаем значение ячейки в переменную findText
                     var findText = cells[j];
                  
                     //Сравниваем значение найденой ячейки с искомым текстом, если равно, возвращаем номер строки, если нет идём дальше
                     if(findText==textContains){
                        return i;
                     }
                    
                     else {
                        j++;
                    }
                  
                }
            }
        }
    // если ничего не нашли возвращаем "no"
    return "no";
}
Только повторюсь, мне нужны ВСЕ совпадения по user1 из таблицы в переменной
 

echoragaq

Client
Регистрация
14.08.2018
Сообщения
11
Благодарностей
0
Баллы
1
Код:
var tbl = project.Tables["tablica"];
var lst = project.Lists["spisok"];
for(int i=0; i < tbl.RowCount; i++)
{
        string u = tbl.GetCell("B",i); //В колонке "B"  
        if(u.Contains(user1)) lst.Add(i.ToString()); //Если обнаружило user1 кладем номер строки в список
 
}

http://prntscr.com/ky0qj4 не получается код завести, крашит ошибку
 

smartwisard

Client
Регистрация
17.01.2017
Сообщения
824
Благодарностей
82
Баллы
28

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 373
Благодарностей
3 297
Баллы
113
http://prntscr.com/ky0qj4 не получается код завести, крашит ошибку
Помогите исправить сниппет, пожалуйста!
Вроде должно работать:
C#:
var tbl = project.Tables["tablica"];
var lst = project.Lists["spisok"];
for(int i=0; i < tbl.RowCount; i++)
{
    string u = tbl.GetCell("B",i); //В колонке "B"
    if(u.Contains(project.Variables["user"].Value)) lst.Add(i.ToString());
}
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 691
Баллы
113
  • Спасибо
Реакции: smartwisard

smartwisard

Client
Регистрация
17.01.2017
Сообщения
824
Благодарностей
82
Баллы
28
в самом начале добавить
string user1 = project.Variables["user1"].Value;
Отлично. Благодарю.
А теперь назовём всё в сниппете чуть правильней.
B список List лягут строки таблицы Table, в которых упомянут ключ keyword.
Код:
string keyword = project.Variables["keyword"].Value;
var tbl = project.Tables["Table"];
var lst = project.Lists["List"];
for(int i=0; i < tbl.RowCount; i++)
{
    string u = tbl.GetCell("AP",i); //В колонке "B"
    if(u.Contains(project.Variables["keyword"].Value)) lst.Add(i.ToString());
}
Подобрали сниппет и нашли ключ!

Мысль изреченная есть ложь.
Взрывая, возмутишь ключи, –
Питайся ими – и молчи.
 
Последнее редактирование:

Bablozavr

Client
Регистрация
26.01.2018
Сообщения
310
Благодарностей
163
Баллы
43
@smartwisard, не знаю, есть ли код кроме этого еще в кубике, если нет, то в твоем примере есть недочет или по другому неиспользуемая переменная

Если код работает, то вот так будет правильнее:
C#:
string keyword = project.Variables["keyword"].Value;
var tbl = project.Tables["Table"];
var lst = project.Lists["List"];
for(int i=0; i < tbl.RowCount; i++)
{
    string u = tbl.GetCell("AP",i); //В колонке "B"
    if(u.Contains(keyword)) lst.Add(i.ToString());
}
Иначе создавать переменную "keyword" смысла нет, в "Contains" уже подставлено это же самое значение.
 
Регистрация
10.12.2015
Сообщения
46
Благодарностей
9
Баллы
8
Добрый день, подскажите плиз похожее элегантное решение на C#, но с акцентом на запись определенных ячеек при совпадении, не смог найти ответа на форуме к сожалению.

Исходные данные:
SourceTable.csv (столбцы A-id,B-name,С-sku,D-price,E-quantity,F-status,G-url)
_ID_;_NAME_;_SKU_;_PRICE_;_QUANTITY_;_STATUS_;_URL_
21412;Grusha;72873;1400.0000;10;1;http://primer.com/123
21413;Apelsin;72874;1500.0000;10;1;http://primer.com/124
21547;Yabloko;76962;4722.0000;10;1;http://primer.com/125
21548;Banan;76964;9936.0000;10;1;http://primer.com/126
21549;Persik;76968;8076.0000;10;1;http://primer.com/127
21550;Ananas;76966;9936.0000;10;1;http://primer.com/128
21551;Tykva;76970;8694.0000;10;1;http://primer.com/129
21552;Zelen;76971-01;9315.0000;10;1;http://primer.com/130
21553;Morkov;41365;9702.0000;10;1;http://primer.com/131

Spisok_Sravnenie.txt (список наименований при сравнении со столбцом "B" из таблицы SourceTable.csv):
Grusha
Apelsin
Yabloko

Spisok_Isklycheniy.txt (список наименований исключений, которые не должны быть обработаны при сравнении):
Ananas
Tykva
Zelen

Из SourceTable.csv(первая строка заголовки) идет перебор циклом каждой строки ячейки "B" на совпадение значения из списка Spisok_Sravnenie.txt, но с учетом списка с исключением значений из Spisok_Isklycheniy.txt

1. Если совпадение найдено, то в столбец "F-status" вставляется 1,а в соотв-ую ячейку столбца "E-quantity" найденной строки вставляется число "9995".На примере груши получаем в _QUANTITY_ значение 9995:

_ID_;_NAME_;_SKU_;_PRICE_;_QUANTITY_;_STATUS_;_URL_
21412;Grusha;72873;1400.0000;9995;1;http://primer.com/123
21413;Apelsin;72874;1500.0000;9995;1;http://primer.com/124
21547;Yabloko;76962;4722.0000;9995;1;http://primer.com/125

2. Если совпадение не найдено,то в столбец "F-status" вставляется 0,а в соотв-ую ячейку столбца E-quantity найденной строки вставляется число "0"
На примере получаем QUANTITY и STATUS по нулям:

_ID_;_NAME_;_SKU_;_PRICE_;_QUANTITY_;_STATUS_;_URL_
21548;Banan;76964;9936.0000;0;0;http://primer.com/126
21549;Persik;76968;8076.0000;0;0;http://primer.com/127
21553;Morkov;41365;9702.0000;0;0;http://primer.com/131

Если совпадение не найдено,а значение присутствует в списке исключений Spisok_Isklycheniy.txt,то данная строка таблицы SourceTable.csv не обрабатывается:

_ID_;_NAME_;_SKU_;_PRICE_;_QUANTITY_;_STATUS_;_URL_
21550;Ananas;76966;9936.0000;10;1;http://primer.com/128 - остаются в таблице SourceTable.csv без изменений
21551;Tykva;76970;8694.0000;10;1;http://primer.com/129 - остаются в таблице SourceTable.csv без изменений
21552;Zelen;76971-01;9315.0000;10;1;http://primer.com/130 - остаются в таблице SourceTable.csv без изменений

Заранее спасибо!
 

bad robot

Client
Регистрация
07.03.2011
Сообщения
178
Благодарностей
28
Баллы
28
Вроде должно работать:
C#:
var tbl = project.Tables["tablica"];
var lst = project.Lists["spisok"];
for(int i=0; i < tbl.RowCount; i++)
{
    string u = tbl.GetCell("B",i); //В колонке "B"
    if(u.Contains(project.Variables["user"].Value)) lst.Add(i.ToString());
}
можно допилить, чтобы искало только точные совпадения? Спасибо
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)