Добавьте метку времени в ячейку, содержащую вложенные IF-операторы, которые не будут меняться при каждом открытии рабочего листа Userform - PullRequest
0 голосов
/ 30 ноября 2018

У меня возникают трудности с установкой временной отметки, чтобы она оставалась статической (неизменной) каждый раз, когда открывается рабочий лист, полученный из пользовательской формы Excel.Цель состоит в том, чтобы ячейки в столбце C предоставляли префикс и временную метку mmddyyhhmm (например, C106CS1130181200), которая определяется информацией в столбце G.

В настоящее время в «Sheet1» у меня есть столбцы AG, пытающиесяОбойти эту проблему.

Формула столбца A:

=IF(SurvData!G2="Confined Space Surveillance","C106CS",IF(SurvData!G2="Asbestos Surveillance","C106AP",IF(SurvData!G2="Electrical Frisking","C106EF",IF(SurvData!G2="Fall Protection Surveillance","C106FP",IF(SurvData!G2="Hearing Conservation","C106HC",IF(SurvData!G2="Tracked HM Storage Location","C106HM",IF(SurvData!G2="Hot Work Surveillance","C106HW",IF(SurvData!G2="Hexavalent Chromium","C106HX",IF(SurvData!G2="Hazard Communication","C106HZ",IF(SurvData!G2="Job Safety Analysis","C106JSA",IF(SurvData!G2="Lockout/Tagout Plus","C106LT",IF(SurvData!G2="Operational/Out of Service","C106OOS",IF(SurvData!G2="Lead Surveillance","C106PB",IF(SurvData!G2="Personal Protection Equip","C106PPE",IF(SurvData!G2="Respiratory Protection Surveillance","C106RP",IF(SurvData!G2="Shop Safety Surveillance","C106SI",IF(SurvData!G2="Ship Safety Surveillance","C106SS","")))))))))))))))))

Формула столбца B: идентична формуле столбца A

Формула столбца C: =IF(B2="","",timestamp())

Формула столбца D: =IF(AND(SurvData!C2<>"",SurvData!G2<>""),Sheet1!B2&C2,SurvData!C2)

Формула столбца F: =CONCATENATE(A2,C2)

Рабочий лист, помеченный ячейками столбца C SurvData, содержит формулу для получения результата серийного идентификатора из столбца F, Sheets1.Независимо от моих усилий, метка времени, похоже, меняется при открытии рабочего листа SurvData.

Существует ли способ записи VBA в событие изменения рабочего листа, которое позволило бы мне объединить вложенный оператор IF () выше сотметка времени и она остается статической (неизменной)?

1 Ответ

0 голосов
/ 03 декабря 2018

Есть два способа сделать это.Первый использует формулу отметки времени.

Это будет работать:

=IF(TargetCell<>"",IF(TimestampCell<>"",TimestampCell,NOW()),"")

Чтобы это работало, вам необходимо включить циклические ссылки.Для этого перейдите к параметрам в Excel -> Формулы -> Установите флажок «Включить итеративный расчет».Это создаст отметку времени в ячейке, как только ячейка назначения будет изменена.Однако я настоятельно призываю вас создать одну отдельную ячейку на вашем листе, чтобы она содержала формулу =NOW() и имела все остальные формулы, которым требуется текущее время для ссылки на эту ячейку.

Создайте список строк, возможных записей для того, что будет отображаться в столбце G.Сделайте это на отдельном листе.Затем добавьте список кодов, которые означают строки рядом с ним.Сделайте VLOOKUP или INDEX/MATCH и вытащите ответ.Что-то вроде =INDEX('NewLookupSheet'!$A$1:$B$17,MATCH('SurvData'!G2,'NewLookupSheet'!$A$2:$A$17,0),2)

Чтобы предоставить решение VBA, мне нужно больше информации, чтобы отредактировать это и обновить ответ.В его нынешнем виде не существует четкого решения VBA для предоставления чего-либо, кроме псевдокода, поскольку нет четкой информации о том, что уже было предпринято или что VBA пытается достичь в отличие от решения на основе формул.

...