Написание формулы поиска Excel для проверки строки символов

Добрый вечер всем,

Не хочу быть ошибкой. Итак, я пытаюсь придумать, как написать формулу Excel, чтобы сравнить то, что наш финансовый отдел обработал и ввел в ORACLE, по сравнению с тем, что я отправил в наш финансовый отдел из моего трекера счетов Excel. Пожалуйста, ознакомьтесь с таблицей и изображением, представленными и прикрепленными ниже.

Проблема заключается в следующем: 1) Мой собственный номер счета-фактуры для отслеживания счетов не имеет такого же интервала или отступа, как номер нашего финансового отдела, введенный в ORACLE, т.е. ORACLE имеет 333222, а у меня INV - 333222. Таким образом, ORACLE не имеет INV. 2) Или я ввел INV-CC7779990124END в Excel, но в ORACLE сотрудники моего финансового отдела ввели CC7779990124END (без INV-) 3) В моем трекере или в данных отчета ORACLE отсутствует интервал или INV.

Есть ли способ написать формулу Excel, которая будет искать/искать оба столбца, и если они совпадают, я могу получить результат «ОПЛАЧЕНО» или «Еще не оплачено»? Я предполагаю, что это какая-то функция СИГМА или СКАНИРОВАНИЕ? Заранее благодарим за любую помощь или руководство в этом вопросе!

Номер счета-фактуры отчета ORACLE Мой собственный номер для отслеживания счетов в Excel Результат (оплачен ли этот счет?) 333222 ИНВ-333222 ОПЛАЧЕННЫЙ 444333 ИНВ - 444333 Еще не оплачено 222111 инв - 234567 123456 РОУ022024 234567 ИНВ - ROU122023 345678 ИНВ-CC7779990323BEF ИНВ-123444 ИНВ-CC7779990124END ИНВ-234555 ИНВ-345667 ИНВ-РОУ022024 ИНВ-РОУ072023 ИНВ-ROU122023 ИНВ-060708(БЭФ) СС7779990524 СС7779990323BEF CC7779990124END

Итак, согласно столбцу результатов, все должно быть оплачено, но почему второй отображается как не оплаченный? В одну сторону: =BYROW(C2:C8,LAMBDA(α, IF(OR(1-ISERR(SEARCH(IFNA(TEXTAFTER(A2:A17,"-"),A2:A17),IFNA‌​(TEXTAFTER(SUBSTITUT‌​E(α," ",),"-"),α)))),"Paid","Not Paid")))

Mayukh Bhattacharya 25.06.2024 09:59

Доброе утро! @MayukhBhattacharya Пожалуйста, позвольте мне уточнить. Итак, я отправляю счета в свой финансовый отдел. Вы правы, что все должно было быть оплачено. Думаю, я использую формулу как способ проверить, есть ли у меня «резервная» документация в папке со счетами. Если у меня есть резервная документация по счету, то на моем трекере будет номер счета :) Спасибо!

QED_Millenium 25.06.2024 16:51

Решения опубликованы, вы можете попробовать и проверить!

Mayukh Bhattacharya 25.06.2024 16:54

@MayukhBhattacharya большое спасибо, формула работает! Могу ли я попросить вас поделиться со мной и научить меня: 1) Есть ли еще одна формула, которую я могу написать, чтобы поместить ее рядом со столбцом «Результаты» после того, как ваша формула даст мне статус «Оплачено» или «Еще не оплачено». Могу ли я получить номер счета-фактуры в версии ORACLE Report? Таким образом, мой Invoice Tracker и отчет Oracle могут «связываться» или «общаться» друг с другом. Мой план состоит в том, чтобы использовать функцию поиска после того, как я получу версию номера счета-фактуры из отчета ORACLE, чтобы найти дату платежа из отчета Oracle и поместить ее рядом с МОИМ счетчиком счетов.

QED_Millenium 27.06.2024 20:21
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
2
4
102
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Вот один из способов сделать это, чтобы получить желаемый результат: для каждого контекста OP все результаты должны отображаться как Paid, однако неясно, почему вы указали второй как Not Yet Paid. Кроме того, я добавил еще два примера в диапазон MyInvoice, чтобы гарантировать, что мы даже получим Not Yet Paid в качестве результатов.


Однако пошаговая формула, которую легко читать и отлаживать для использования в будущем, могла бы сделать ее короче:

=LET(
     _MyInvoice, C2:C10,
     _Oracle, A2:A17,
     _FixOracle, IFNA(TEXTAFTER(_Oracle,"-"),_Oracle),
     _FixInvoice, IFNA(TEXTAFTER(SUBSTITUTE(_MyInvoice," ",),"-"),_MyInvoice),
     BYROW(_FixInvoice,LAMBDA(α,IF(OR(1-ISERR(SEARCH(_FixOracle,α))),"Paid","Not Yet Paid"))))

Это также может быть достигнуто без использования вспомогательной функции LAMBDA():

=LET(
     _MyInvoice, IFNA(TRIM(TEXTAFTER(C2:C10,"-")),C2:C10),
     _Oracle, IFNA(TRIM(TEXTAFTER(A2:A17,"-")),A2:A17)&"",
     IF(1-ISNA(XMATCH(_MyInvoice,_Oracle)),"Paid","Not Yet Paid"))

Чистый и соответствующий

=LET(source,A2:A17,lookup,C2:C11,
        remove," ",after,"-",yes,"PAID",no,"Not yet paid",
    GetClean,LAMBDA(array,IFERROR(TEXTAFTER(
        SUBSTITUTE(array,remove,""),after),""&array)),
    IF(ISNUMBER(XMATCH(GetClean(lookup),GetClean(source))),yes,no))

Более детально

=LET(source,A2:A17,lookup,C2:C11,
        remove," ",after,"-",yes,"PAID",no,"Not yet paid",
    GetClean,LAMBDA(array,IFERROR(TEXTAFTER(
        SUBSTITUTE(array,remove,""),after),""&array)),
    s,GetClean(source),
    l,GetClean(lookup),
    r,IF(ISNUMBER(XMATCH(l,s)),yes,no),
    r)
  • Замените последнюю r любой другой переменной (например, s или l), чтобы увидеть, что она содержит.

РЕДАКТИРОВАТЬ

  • Чтобы сравнить только цифры, вы можете использовать следующее.
=LET(source,A2:A17,lookup,C2:C11,yes,"PAID",no,"Not yet paid",
   GetDigits,LAMBDA(array,MAP(array,LAMBDA(m,
       CONCAT(TOCOL(--MID(m,SEQUENCE(LEN(m)),1),2))))),
   IF(ISNUMBER(XMATCH(GetDigits(lookup),GetDigits(source))),yes,no))

Более детально

=LET(source,A2:A17,lookup,C2:C11,yes,"PAID",no,"Not yet paid",
   GetDigits,LAMBDA(array,MAP(array,LAMBDA(m,
       CONCAT(TOCOL(--MID(m,SEQUENCE(LEN(m)),1),2))))),
   s,GetDigits(source),
   l,GetDigits(lookup),
   r,IF(ISNUMBER(XMATCH(l,s)),yes,no),
   r)
  • Замените последнюю r любой другой переменной (например, s или l), чтобы увидеть, что она содержит.

С небольшим изменением:

=LAMBDA(my_num, ora_num,
    IF(
        ISBLANK(my_num),
        "",
        IF(
            ISNUMBER(
                XMATCH(
                    TRIM(TEXTAFTER(my_num, "-", , , , my_num)),
                    TRIM(TEXTAFTER(ora_num, "-", , , , ora_num))
                )
            ),
            "PAID",
            "Not Yet Paid"
        )
    )
)(C2:C17, A2:A17)

Другие вопросы по теме