Здравствуйте. Помогите сделать формулу или через VBA. Имеется своеобразный грид сеткой 200*200, определяемыми координатами. Примерную ячейку с координатами привела в файле, границы ячейки определяются правым верхним углом. Внутри каждой ячейки необходимо вписать названия из столбца Well согласно условиям по координатам Х и У. Н-р, показала для примера по KL_0001 и KL_0002. Хотела прописать такую формулу, чтобы по координатам выбирались значения (названия) в каждую ячейку из массива столбцы В:Е (он огромен), тут только кусочек. Поэтому в каждую ячейку грида может входить много названий. Можно через запятую (др. чем-нибудь) разграничить названия. Там дальше по названию планирую подтягивать другие данные в этих ячейках.
Здравствуйте. Помогите сделать формулу или через VBA. Имеется своеобразный грид сеткой 200*200, определяемыми координатами. Примерную ячейку с координатами привела в файле, границы ячейки определяются правым верхним углом. Внутри каждой ячейки необходимо вписать названия из столбца Well согласно условиям по координатам Х и У. Н-р, показала для примера по KL_0001 и KL_0002. Хотела прописать такую формулу, чтобы по координатам выбирались значения (названия) в каждую ячейку из массива столбцы В:Е (он огромен), тут только кусочек. Поэтому в каждую ячейку грида может входить много названий. Можно через запятую (др. чем-нибудь) разграничить названия. Там дальше по названию планирую подтягивать другие данные в этих ячейках.kamaridenovag
Sub u_257() Application.ScreenUpdating = False 'отключим обновление экрана Range("i4:ad27").ClearContents 'сотрем старые значения ua = 4 'верхняя строка ub = Cells(Rows.Count, "b").End(xlUp).Row 'нижняя строка For uc = ua To ub 'проходимся циклом по Well /uc = очередня строка цикла ue = Range("b" & uc).Value 'значение в ячейке uf = Range("d" & uc) + 199 'координата X ug = Range("e" & uc) + 199 'координата Y va = Application.Match(uf, Range("3:3"), 1) 'ПОИСКПОЗ(;;ИСТИНА) X vb = Application.Match(ug, Range("h:h"), 1) 'ПОИСКПОЗ(;;ИСТИНА) Y wa = Application.IsNumber(va) 'проверим найдены ли координаты (на всякий) wb = Application.IsNumber(vb) If wa And wb Then 'если найдены, тогда sa = Cells(vb, va) 'значение ячейки с соот. координатами If sa = "" Then 'если ячейка пуста sb = ue Else 'иначе, т.е. в ячейке уже есть значение sb = sa & ", " & ue End If Cells(vb, va) = sb 'запишем End If Next Application.ScreenUpdating = True 'включим обновление экрана End Sub
[/vba]
апдэйт: чет скучно на работе))) решил формулами (с допами) запилить, соот xlsx файл
ну как-то так примерно (наверное) [vba]
Код
Sub u_257() Application.ScreenUpdating = False 'отключим обновление экрана Range("i4:ad27").ClearContents 'сотрем старые значения ua = 4 'верхняя строка ub = Cells(Rows.Count, "b").End(xlUp).Row 'нижняя строка For uc = ua To ub 'проходимся циклом по Well /uc = очередня строка цикла ue = Range("b" & uc).Value 'значение в ячейке uf = Range("d" & uc) + 199 'координата X ug = Range("e" & uc) + 199 'координата Y va = Application.Match(uf, Range("3:3"), 1) 'ПОИСКПОЗ(;;ИСТИНА) X vb = Application.Match(ug, Range("h:h"), 1) 'ПОИСКПОЗ(;;ИСТИНА) Y wa = Application.IsNumber(va) 'проверим найдены ли координаты (на всякий) wb = Application.IsNumber(vb) If wa And wb Then 'если найдены, тогда sa = Cells(vb, va) 'значение ячейки с соот. координатами If sa = "" Then 'если ячейка пуста sb = ue Else 'иначе, т.е. в ячейке уже есть значение sb = sa & ", " & ue End If Cells(vb, va) = sb 'запишем End If Next Application.ScreenUpdating = True 'включим обновление экрана End Sub
[/vba]
апдэйт: чет скучно на работе))) решил формулами (с допами) запилить, соот xlsx файлNic70y
Nic70y, я применяю ваш код VBA на свой огромный список координат, выходит Run-time error ошибка 13, Type mismatch Debug показывает в строке ug = Range("e" & uc) + 199 'координата Y
Второй способ с формулами применю тогда) спасибо!
Nic70y, я применяю ваш код VBA на свой огромный список координат, выходит Run-time error ошибка 13, Type mismatch Debug показывает в строке ug = Range("e" & uc) + 199 'координата Y
Второй способ с формулами применю тогда) спасибо!kamaridenovag