Работа с таблицей (поиск совпадений и запись в столбцы)

woowpanda

Client
Регистрация
19.03.2021
Сообщения
9
Благодарностей
1
Баллы
3
Всем привет! Нужна помощь.

1) Есть два столбца "А" и "В"
2) В столбце "А" записаны ID номера (они периодически повторяются по строкам)
3) В столбце "В" записаны урлы

Как можно реализовать кубиками сравнение строк в столбце "А", чтобы при совпадение значения ID записывалось в другие столбцы новой таблицы построчно?
Так же, если ID в столбце "А" не совпадает, то записывает в новую строку?

Пример и результат (на картинке примеры двух таблиц):

В столбце "А" есть 5 строк с одинаковым ID "1234". В столбце "В" уникальный урл, который нужно записать в столбцы "С", "D", "E", "F".
После 5 строк появляются новые ID, которые нужно записать отдельными строками.

Спасибо!
 

Вложения

K R

Client
Регистрация
14.01.2017
Сообщения
127
Благодарностей
127
Баллы
43
... Как можно реализовать кубиками...
Кубиками такое реализовать сложно. Есть решение на C#.

Если значение id уникальное, то код добавит в таблицу новую строку, запишет id в столбец A, url в столбец B.
Если такой id уже есть в таблице, то запишет url в соответствующую строку, в первый по счёту столбец где будет свободная ячейка.
C#:
// Получение значений из переменных проекта.
string id = project.Variables["id"].Value;
string url = project.Variables["url"].Value;

// Определение таблицы по названию. Вместо "MyTable" впишите название своей таблицы.
IZennoTable table = project.Tables["MyTable"];

// Поиск строки, содержащей запрошенное значение "id", в столбце 0 (A)
int rowIndex = -1;
for (int i = 0; i < table.RowCount; i++)
{
    if (table.GetCell(0, i) == id)
    {
        rowIndex = i;
        break;
    }
}

if (rowIndex == -1) // Если строка не найдена
{
    table.AddRow(new string[] {id, url});
}
else // Если строка найдена
{
    int columnIndex = 1;
    for (int column = 1; column <= 25; column++) // Цикл по столбцам от B до Z
    {
        string value = table.GetCell(column, rowIndex);
        if (string.IsNullOrEmpty(value))
        {
            columnIndex = column;
            break;
        }
    }
    table.SetCell(columnIndex, rowIndex, url);
}
 
  • Спасибо
Реакции: woowpanda

woowpanda

Client
Регистрация
19.03.2021
Сообщения
9
Благодарностей
1
Баллы
3
Кубиками такое реализовать сложно. Есть решение на C#.

Если значение id уникальное, то код добавит в таблицу новую строку, запишет id в столбец A, url в столбец B.
Если такой id уже есть в таблице, то запишет url в соответствующую строку, в первый по счёту столбец где будет свободная ячейка.
C#:
// Получение значений из переменных проекта.
string id = project.Variables["id"].Value;
string url = project.Variables["url"].Value;

// Определение таблицы по названию. Вместо "MyTable" впишите название своей таблицы.
IZennoTable table = project.Tables["MyTable"];

// Поиск строки, содержащей запрошенное значение "id", в столбце 0 (A)
int rowIndex = -1;
for (int i = 0; i < table.RowCount; i++)
{
    if (table.GetCell(0, i) == id)
    {
        rowIndex = i;
        break;
    }
}

if (rowIndex == -1) // Если строка не найдена
{
    table.AddRow(new string[] {id, url});
}
else // Если строка найдена
{
    int columnIndex = 1;
    for (int column = 1; column <= 25; column++) // Цикл по столбцам от B до Z
    {
        string value = table.GetCell(column, rowIndex);
        if (string.IsNullOrEmpty(value))
        {
            columnIndex = column;
            break;
        }
    }
    table.SetCell(columnIndex, rowIndex, url);
}

Спасибо за ответ! Не совсем только понял. Этот кубик нужно зациклить или в конце создать новый, чтобы записал результат в отдельную таблицу?
 

K R

Client
Регистрация
14.01.2017
Сообщения
127
Благодарностей
127
Баллы
43
Спасибо за ответ! Не совсем только понял. Этот кубик нужно зациклить или в конце создать новый, чтобы записал результат в отдельную таблицу?
Вы в процессе работы шаблона получаете переменные id и url, верно?
Код заносит эти данные в таблицу. Затем вам нужно получить новые значения переменных id и url, после чего снова выполнить код. То есть да, нужно зациклить.
 
  • Спасибо
Реакции: woowpanda

woowpanda

Client
Регистрация
19.03.2021
Сообщения
9
Благодарностей
1
Баллы
3
Вы в процессе работы шаблона получаете переменные id и url, верно?
Код заносит эти данные в таблицу. Затем вам нужно получить новые значения переменных id и url, после чего снова выполнить код. То есть да, нужно зациклить.
Спасибо за ответ! Не могли бы вы показать пример, если это не затруднит вас?
 

K R

Client
Регистрация
14.01.2017
Сообщения
127
Благодарностей
127
Баллы
43
Спасибо за ответ! Не могли бы вы показать пример, если это не затруднит вас?
Я не знаю как у вас реализовано получение id и url. Пример шаблона сейчас скинуть нет возможности.

Вы же на каком-то этапе работы шаблона получаете id и url? Они у вас записываются в какие-то переменные чтобы потом занести их в таблицу? Вот эти переменные нужно подставить вместо project.Variables["id"].Value и project.Variables["url"].Value здесь:
string id = project.Variables["id"].Value;
string url = project.Variables["url"].Value;

Можете написать в телеграм, там общение будет продуктивнее.
 
  • Спасибо
Реакции: woowpanda

woowpanda

Client
Регистрация
19.03.2021
Сообщения
9
Благодарностей
1
Баллы
3
Я не знаю как у вас реализовано получение id и url. Пример шаблона сейчас скинуть нет возможности.

Вы же на каком-то этапе работы шаблона получаете id и url? Они у вас записываются в какие-то переменные чтобы потом занести их в таблицу? Вот эти переменные нужно подставить вместо project.Variables["id"].Value и project.Variables["url"].Value здесь:
string id = project.Variables["id"].Value;
string url = project.Variables["url"].Value;

Можете написать в телеграм, там общение будет продуктивнее.
Вроде разобрался, спасибо большое!)
 
  • Спасибо
Реакции: K R

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