Сделайте пример с различными данными и не будет к вам вопросов
Так месяцы вроде на все земле универсальны) Вот оказывается моя формула универсальна, но поведение экселя при переключении файлов чет не очень хорошее Нашел ответ на форуме, буду пробовать)
p.s. Решение с экселем сработало) Всем спасибо за помощь!
Оказалось, что моя формула работает, но при переключении между файлами "имяфайла" берется активного окна (что для меня, конечно, невероятный шок), т.е. если открыто несколько файлов, то формула меняется в зависимости от активного файла. Более того, если первый файл называется кефир и в нем формула, второй яблоко, третий персик, четвертый банан - то если открывать их по очереди, а потом закрывать, то в этом порядке и будет меняться формула. Это помогла мне понять данная формула:
написал: Jackjumper, что там есть в ваших данных знаете только вы поэтому, можете самостоятельно решать свою задачу или ждите придут еще люди погадать, как это попытался сделать я)) удачи!
Все знают, что в моих данных, эти знания можно получить, прочитав: "Неизменно только слово Report, месяца меняются, годы меняюся, KF-01 тоже меняется" - если меняются месяца, то формула, очевидно, не подходит, но спасибо, за участие)
написал: для названия файла написанного в А1 формула
Код
[URL=#]?[/URL] 1 =ПСТР(A1;14;ДЛСТР(A1)-20)
вернет название месяца из названия файла
Это сработает только если часть KF-01 неизменна, а она может быть SPB-01 например, но и -20 работает только для месяца с определенным количеством знаков. Смысл в поиске именно слова. Т.е. чтобы формула хотя бы понимала, что обрезать надо после "-01 " и до конца слова.
Report KF-01 December 21.xlsx Report KF-01 December 22.xlsx Report KF-01 December 23.xlsx ... Report KF-01 December 24.xlsx Report KF-01 December 25.xlsx
Неизменно только слово Report, месяца меняются, годы меняюся, KF-01 тоже меняется
В ячейке должен оказаться месяц из названия. Проблема в том, что месяца имеют разную длину, не являются началом строки, т.е. находятся посередине в неопределенном месте и не определенной длины.
Написал вот такое чудо техники: =ЛЕВСИМВ(ПРАВСИМВ(ЛЕВСИМВ(ПСТР(ЯЧЕЙКА("имяфайла");ПОИСК("[";ЯЧЕЙКА("имяфайла"))+1;ПОИСК(".xls";ЯЧЕЙКА("имяфайла"))-ПОИСК("[";ЯЧЕЙКА("имяфайла"))-1);100);ДЛСТР(ЛЕВСИМВ(ПСТР(ЯЧЕЙКА("имяфайла");ПОИСК("[";ЯЧЕЙКА("имяфайла"))+1;ПОИСК(".xls";ЯЧЕЙКА("имяфайла"))-ПОИСК("[";ЯЧЕЙКА("имяфайла"))-1);100))-НАЙТИ("1 ";ЛЕВСИМВ(ПСТР(ЯЧЕЙКА("имяфайла");ПОИСК("[";ЯЧЕЙКА("имяфайла"))+1;ПОИСК(".xls";ЯЧЕЙКА("имяфайла"))-ПОИСК("[";ЯЧЕЙКА("имяфайла"))-1);100))-1);ДЛСТР(ПРАВСИМВ(ЛЕВСИМВ(ПСТР(ЯЧЕЙКА("имяфайла");ПОИСК("[";ЯЧЕЙКА("имяфайла"))+1;ПОИСК(".xls";ЯЧЕЙКА("имяфайла"))-ПОИСК("[";ЯЧЕЙКА("имяфайла"))-1);100);ДЛСТР(ЛЕВСИМВ(ПСТР(ЯЧЕЙКА("имяфайла");ПОИСК("[";ЯЧЕЙКА("имяфайла"))+1;ПОИСК(".xls";ЯЧЕЙКА("имяфайла"))-ПОИСК("[";ЯЧЕЙКА("имяфайла"))-1);100))-НАЙТИ("1 ";ЛЕВСИМВ(ПСТР(ЯЧЕЙКА("имяфайла");ПОИСК("[";ЯЧЕЙКА("имяфайла"))+1;ПОИСК(".xls";ЯЧЕЙКА("имяфайла"))-ПОИСК("[";ЯЧЕЙКА("имяфайла"))-1);100))-1))-3)
Все хорошо, формула работает, но когда файл открывается, то формула не всегда срабатывает. Она показывает не следующий месяц, а не предыдущий, но если ее обновить, то она работает нормально. Как написать более стабильную формулу, которая будет дергать название месяца из файла?
evgeniygeo, Да, разумеется вручную работает. Я специльно создал файл отдельный, поместил его в папку отличную от той, где лежит файл с макросом. При выполнении он должен запрашивать папку, где лежат файлы, а в этом случае мы не доходим до данного этапа.
Есть папка с файлами (600 файлов), в каждом из них нужно заменить текст в формуле. В VBA вообще не шарю, после долгих поисков состряпал это:
Sub Get_All_File_from_Folder() Dim sFolder As String, sFiles As String Dim wb As Workbook With Application.FileDialog(msoFileDialogFolderPicker) If .Show = False Then Exit Sub sFolder = .SelectedItems(1) End With sFolder = sFolder & IIf(Right(sFolder, 1) = Application.PathSeparator, "", Application.PathSeparator) Application.ScreenUpdating = False sFiles = Dir(sFolder & "*.xlsx*") Do While sFiles <> "" With Selection.Find .ClearFormatting .Text = "AF-KF Reports\Rockrolls\TTM\[Food Cost AF-01 2022 9 Summer" .Replacement.ClearFormatting .Replacement.Text = "Rockrolls\TTM\[Food Cost AF-01" .Execute Replace:=wdReplaceAll, Forward:=True, _ Wrap:=wdFindContinue End With sFiles = Dir Loop Application.ScreenUpdating = True End Sub
Макрос выдает ошибку Run-time error '450': Wrong number of agruments or invalid property assignment на строчке With Selection.Find (выделяет ее желтым)
Есть файл, в котором 28,29,30,31 листов (в зависимости от месяца), каждый лист называется 01.01,02.01,03.01, т.е. датами текущего месяца. На некоторых листах содержатся в одном и том же столбце, но в разных строках записи типа: "Доставка. Иванов И.И.", "Доставка. Петров В.И.", "Доставка. Такси" - и т.д. т.е. неизменна часть со словом доставка, а всё остальное меняется, в столбце правее, выданная сумма. Ячейки периодически повторяются. Необходимо, чтобы в другом отдельном файле формула проверяла все листы из файла с листам/датами и искала слово "Доставка", выводя при этом полную строку "Доставка. Петров В.И." в которой это слово было упомянуто и так построчно, пока не перечислит всё. Правее второй столбец, в котором выводится сумма, стоящая справа от данного столбца. =ИНДЕКС($B$2:$B$16;НАИМЕНЬШИЙ(ЕСЛИ($E$2=A2:A16;СТРОКА(B2:B16)-1;"");СТРОКА()-5)) (значения из примера) - данная формула позволяет искать и выводить нужные значения только для одного листа и только для конкретно заданного слова/ячейки. Также есть вот такая формула: =ВПР(A2;ДВССЫЛ("'"&ИНДЕКС($E$2:$E$5;ПОИСКПОЗ(ИСТИНА;СЧЁТЕСЛИ(ДВССЫЛ("'"&$E$2:$E$5 &"'!A1:A50");A2)>0;0))&"'!A:B");2;0) - которая как раз позволяет искать по нескольким страницам, но во-первых, есть проблема с выводом этих листов из другого файла, а, во-вторых, это всё еще впр.
Формула: =TEXT(WEEKDAY(DATE($AG$1;MONTH($A$1&0);B3);1);"aaa"), где $A$1 - это буквенное значение месяца, например Февраль. B3 - числовая ячейка для определения числа месяца, $AG$1 - ссылка на год. Соотв. "ааа" - формат названия дня недели.
Всё бы ничего, но весь excel на английском, формулы на нем же, - везде основной английский, а excel, во-первых, не работает с month, если вместо февраля - february, а вместо дней недели на английском выводятся (если формулу месяца заменить на цифру) дни недели на русском. Как решить проблему с языком?