Здравствуйте. Из столбца С в вашу формулу ничего не попадает. По краней мере в примере. А так - пробуйте
Код
Sub Расчет()
Range("f3:f7").Formula = "=1/d3*100"
'если нужно заменить формулы на значения, то добавить
Range("f3:f7").Value = Range("f3:f7").Value
End Sub
RAN, вопрос не в том, чтобы формулу изменить - это я уже сделал. вопрос как адекватно очистить таблицу перед вставкой новых данных. ведь ламается не только УФ, но и "обычное"(см више).
что вы подразумеваете под "открыванием интернет-сайта по ссылке через VBA"? просто переход по ссылке через браузер или получение каких то данных в переменную?(при этом не обязательно показывать что либо пользователю)
sokol92 написал: Если, например, просто выделить часть строк "умной" таблицы
речь идет не просто о части строк, а о полном их удалении и последующей вставки новых данных, не поломав при этом вычисляемые столбцы, форматы столбцов и УФ.
Вот пример. RAN - ваш способ в макросе write_table2. Обратите внимание на УФ - оно ломается.
При перезаписи с помощью write_table - нет. Но появился другой баг - форматы с первой строки вроде бы копируются, но значения в этих форматах - только в первой строке, в остальных - срабатывает автоформат. если же продублировать строку
то все вставляется правильно. пока использую как временный костыль, ибо на больших массивах, думаю, будет лишняя задержка. У кого есть мысли почему так происходит?
Здравствуйте. Поделитесь способом пожалуйста, как по нормальному перезаписать таблицу? Проблема возникает, когда новых строк меньше, чем существующих. Пробовал варианты: 1. Вычислить разницу между новым и старым размером, удалить лишние строки в цикле как
Код
Do While .ListRows.Count > rows_count
.ListRows(.ListRows.Count).Delete
Loop
это быстро, но слетает условное форматирование, в котором ссылка на две строки таблицы. Вариант с ClearContents оставляет форматирование внизу. Вариант с удалением всей строки не подходит, так как влияет на другие таблицы на листе. По этой же причине не подходит.Listrows(i).range.resize(dif_rows).delete способа удаления нескольких listrows за раз не нашел.
PooHkrd написал: таблица, то это проще через Power Query все же сделать.
Нужна таблица, но я планирую перенести это дело в Power BI и выбирать дату с помощью разделителя. А как передать выбранную дату в Power Query я не знаю. В принципе и с DAX тоже проблемы. Создал CALENDARAUTO и меру
Код
CurDate = MAX('MyCalendar'[Date])
но почему то ни одно решение( решение PooHkrd все таки реагирует - у меня был какой то кривой виджет с магазина. со стандартным работает) не реагирует на выбранное в разделителе значение. Например в решении Андрея
lenatoy написал: как сделать по двум/трем и более признакам
например так - указать признак через разделитель, например запятую
Код
Sub Test()
Dim iCell As Range, Priznak As Variant
Priznak = Application.InputBox("признак переноса сроки", "Екатеринбург", "Екатеринбург")
Priznak = Split(Priznak, ",")
For Each iCell In Range("A2", [A2].End(xlDown))
For i = lbound(Priznak) To Ubound(Priznak)
If iCell = Priznak(i) Then
With Sheets("ЕКБ")
iCell.EntireRow.Copy Destination:=.Cells(.Cells(Rows.Count, "A").End(xlUp).Row + 1, "A")
End With
End If
Next i
Next iCell
MsgBox "строки скопированы на другой лист", vbInformation, ""
End Sub
Джек Восмеркин написал: Что бы при выборе данных в комбобоксе подтягивались данные из другого комбобокса,
Подтягивались куда? Задание неясно. если нужно во втором боксе получить список на основании первого, то что то типа sSQL = "Select distinct id2 FROM Itog WHERE id1 =" & Me.ComboBox1.Value & "ORDER BY 1"
Здравствуйте. Начинаю осваивать POWER) В частности Power Pivot i Power BI. Не могу сообразить как "на лету" сформировать таблицу.
Пример: Есть таблица переездов техники, но переезды бывают не каждый день. Нужен отчет, который показывает последнее местонахождение на конкретную дату.
Пока реализовал через CROSSJOIN справочника техники и календаря и подтягиваю местонахождение, но такая реализация кажется мне какой то кривой. Можно ли как то вычислить максимальную дату меньше указанной и вернуть список техники? Спасибо.
Здравствуйте. Собственно проблема в названии. При выполнении например такого макроса
Код
Sub test()
lr = 2
Call subtest(lr)
MsgBox (lr)
End Sub
Sub subtest(lr)
lr = 3
End Sub
в сообщении будет 3, а не 2, как я ожидал. Это так и должно быть? Я почему то думал, что lr subtest'a и lr test'a - это две разные переменные, пусть и с одинаковыми именами.
Здравствуйте. В вашем ТЗ вы пытаетесь реализовать "бумажный" подход, только в електронном виде. Если рассматриваете немного иной подход к составлению графика готов взяться. Контакты в профиле.
Option Explicit
Private Sub Worksheet_Activate()
Dim arr_in
Dim tabl As Object
arr_in = Sheets(1).Range("Òàáëèöà1").Value
Set tabl = Sheets(2).ListObjects("Òàáëèöà2")
If Not tabl.DataBodyRange Is Nothing Then tabl.DataBodyRange.ClearContents
tabl.Resize tabl.Range.Resize(UBound(arr_in) + 1)
tabl.DataBodyRange.Value = arr_in
End Sub