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

woowpanda

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

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

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

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

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

Спасибо!
 

Вложения

  • Zenno1.png
    Zenno1.png
    29,3 KB · Просмотры: 157
  • Zenno2.png
    Zenno2.png
    15 KB · Просмотры: 143
... Как можно реализовать кубиками...
Кубиками такое реализовать сложно. Есть решение на 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
Кубиками такое реализовать сложно. Есть решение на 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);
}


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

Спасибо за ответ! Не могли бы вы показать пример, если это не затруднит вас?
 
Спасибо за ответ! Не могли бы вы показать пример, если это не затруднит вас?
Я не знаю как у вас реализовано получение 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
Я не знаю как у вас реализовано получение 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

Похожие темы

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