#vba #excel
#vba #excel
Вопрос:
Это очень странный запрос:
Я хотел бы, чтобы макрос VBA или оператор IF считывали, откуда извлекается ссылка, и заполняли другую ячейку, показывая, где была ссылка на ячейку.
Это контрольный список проверки для детали с сотнями измерений, и данные извлекаются примерно из 7 различных электронных таблиц. Спецификация требует, чтобы у каждого значения был соответствующий метод проверки. Я понимаю, что могу сделать это индивидуально, однако, конечно, ячейки ссылаются на другую ячейку, которая будет принимать индивидуальные инструкции IF для каждой, которые не будут сокращаться в любое время. Я пытаюсь использовать это утверждение и применить его к десяткам других электронных таблиц, продвигающихся вперед, иначе ввод вручную был бы не так уж плох.
Например: если ячейка ссылается на значение из рабочей книги Hard Gauge, я бы хотел, чтобы в ячейке справа от нее было написано «Hard Gauge», а если ячейка ссылается на значение Height Gauge, я бы хотел, чтобы в ячейке справа от нее было написано «Height Gauge».
Что-то вроде:
IF({File Path}[40452-1016 REV. A **(HEIGHT GAGE)**.xlsm] = TRUE, "HEIGHT GAUGE", IF({File Path}[40452-1016 REV. A **(HARD GAGE)**.xlsm] = TRUE, "HARD GAUGE",,))
Я знаю, что проблема будет заключаться в игнорировании значения ячейки, которое следует за « .xlsm
«
{File Path}[40452-1016 REV. A (HEIGHT GAGE).xlsm]**'!$C$29**
Может кто-нибудь мне помочь или сообщить, возможно ли это вообще. Это не обязательно должно быть из оператора IF, VBA
макрос будет работать просто отлично.
Ответ №1:
Это даст вам все слева от .xlsm, если строка действительно содержит .xlsm . Это должно быть хорошей отправной точкой
Sub t()
Dim endrow As Long
Dim column As String
Dim a As Range
column = "A"
endrow = ActiveSheet.Range(column amp; Rows.Count).End(xlUp).Row
For Each a In Range(column amp; endrow)
If InStr(1, a.Value, ".xlsm", vbTextCompare) > 0 Then
a.Offset(0, 1).Value = Left(a.Value, InStr(1, a.Value, ".xlsm", vbTextCompare))
End If
Next a
End Sub