У меня есть таблица Excel, называемая «группами», где заголовки являются именами групп. В столбце ниже имя группы являются членами этой конкретной группы.динамические ссылки на таблицы с Excel VBA
В другой таблице у меня есть все имена членов в первом столбце и имена групп в первой строке. И я хочу проверить для каждого имени участника, находится ли он в группе выше.
Чтобы проверить, является ли Тим в группе «ребята» Я мог бы использовать формулу:
=if(countif(groups[guys];"Tim")>0;"yes";"no")
Но у меня есть командная кнопка «добавить группу», которая открывает UserForm, где я могу войти в новую группу + члены. Имя новой группы вводится в текстовое поле 1. Группа и член добавляются в таблицу групп.
Я хочу обновить вторую таблицу. Я хотел бы сделать следующее:
With Worksheets("Overview").ListObjects("PersonIsInGroupTab")
.ListColumns.Add Position:=3
.HeaderRowRange(3).Value = TextBox1.Value
.DataBodyRange(1, 3).formula= "=if(countif(groups[textbox1.value];""Tim"")>0;""yes"",""no"")"
End With
К сожалению, это не работает.
textbox1.value
- это название новой группы (также добавленной на вкладку групп).
Есть ли способ, которым я могу сделать эту работу?
EDIT: Я пробовал использовать другой подход, который не сработал, но может помочь ответить на вопрос. В таблице, которая проверяет, является ли определенное лицо членом группы, я начинаю по умолчанию с одной группы. И вручную введите формулу
=if(countif(groups[guys],"Tim")>0,"yes","no")
в ячейку (в моем случае J4). Когда я добавляю группу «gals» с использованием пользовательской формы, я получаю второй столбец «gals» в моей таблице. Когда я вручную перетаскиваю формулу из ячейки [guys] в ячейку [gals] (K4), она работает так, как я ее хочу. И я получить формулу
=if(countif(groups[gals],"Tim)>0,"yes","no")
в клетке ГАЛС (К4) Поэтому я полагал, что я мог бы просто сделать это автозаполнение в VBA как часть «добавить группу» рутина. Это код, который я использовал:
Range("groups[guys]").Select
Selection.AutoFill Destination:=Range("J4:K4"), Type:=xlFillDefault
Я получил этот код от записи автозаполнения в виде макроса. Но когда я запускаю его, формула в K4 такая же, как в J4, с группами [парни] вместо групп [gals]. I can not do Destination: = Range ("groups [[guys]: [gals]]"), поскольку я хочу, чтобы он работал с любым groupname не только gals.
Есть ли какие-либо конкретные ошибки вы получаете? – DragonSamu
ошибка времени выполнения 1004 в .DataBodyRange (1, 3) .formula = "= if (countif (groups [textbox1.value];" Tim ")> 0;" yes ";" no ")". Полагаю, я не могу ссылаться таким образом. textbox1.value получен из текстового поля в пользовательской форме. Если textbox1.value = group1, тогда будут работать группы [group1]. К сожалению, я не знаю textbox1.value заранее. – Tim
Формула неверна и ее необходимо пересмотреть.(1) заменить сингл «с двойным» «в формуле, подобный так» = if (countif (groups [textbox1.value]; »« Tim »")> 0; "yes" ";" "no" ") «(2) вы используете не английскую версию Excel. Тем не менее, в VBA все формулы должны быть переданы в английском формате. Таким образом, вам нужно заменить символ«; »следующим образом:' '= if (countif (groups [textbox1.value], "Tim" ")> 0," "yes" "," "no" ")" '.Это должно работать лучше. – Ralph