Добрый вечер всем,
Не хочу быть ошибкой. Итак, я пытаюсь придумать, как написать формулу Excel, чтобы сравнить то, что наш финансовый отдел обработал и ввел в ORACLE, по сравнению с тем, что я отправил в наш финансовый отдел из моего трекера счетов Excel. Пожалуйста, ознакомьтесь с таблицей и изображением, представленными и прикрепленными ниже.
Проблема заключается в следующем: 1) Мой собственный номер счета-фактуры для отслеживания счетов не имеет такого же интервала или отступа, как номер нашего финансового отдела, введенный в ORACLE, т.е. ORACLE имеет 333222, а у меня INV - 333222. Таким образом, ORACLE не имеет INV. 2) Или я ввел INV-CC7779990124END в Excel, но в ORACLE сотрудники моего финансового отдела ввели CC7779990124END (без INV-) 3) В моем трекере или в данных отчета ORACLE отсутствует интервал или INV.
Есть ли способ написать формулу Excel, которая будет искать/искать оба столбца, и если они совпадают, я могу получить результат «ОПЛАЧЕНО» или «Еще не оплачено»? Я предполагаю, что это какая-то функция СИГМА или СКАНИРОВАНИЕ? Заранее благодарим за любую помощь или руководство в этом вопросе!
Доброе утро! @MayukhBhattacharya Пожалуйста, позвольте мне уточнить. Итак, я отправляю счета в свой финансовый отдел. Вы правы, что все должно было быть оплачено. Думаю, я использую формулу как способ проверить, есть ли у меня «резервная» документация в папке со счетами. Если у меня есть резервная документация по счету, то на моем трекере будет номер счета :) Спасибо!
Решения опубликованы, вы можете попробовать и проверить!
@MayukhBhattacharya большое спасибо, формула работает! Могу ли я попросить вас поделиться со мной и научить меня: 1) Есть ли еще одна формула, которую я могу написать, чтобы поместить ее рядом со столбцом «Результаты» после того, как ваша формула даст мне статус «Оплачено» или «Еще не оплачено». Могу ли я получить номер счета-фактуры в версии ORACLE Report? Таким образом, мой Invoice Tracker и отчет Oracle могут «связываться» или «общаться» друг с другом. Мой план состоит в том, чтобы использовать функцию поиска после того, как я получу версию номера счета-фактуры из отчета ORACLE, чтобы найти дату платежа из отчета Oracle и поместить ее рядом с МОИМ счетчиком счетов.


Вот один из способов сделать это, чтобы получить желаемый результат: для каждого контекста 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)
Итак, согласно столбцу результатов, все должно быть оплачено, но почему второй отображается как не оплаченный? В одну сторону:
=BYROW(C2:C8,LAMBDA(α, IF(OR(1-ISERR(SEARCH(IFNA(TEXTAFTER(A2:A17,"-"),A2:A17),IFNA(TEXTAFTER(SUBSTITUTE(α," ",),"-"),α)))),"Paid","Not Paid")))