Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 След.
Вертикальное и горизонтальное отражение
 
Добрый день!
У меня есть рисунки сделанные с помощью закрашенных ячеек. Иногда мне нужно какой-нибудь рисунок изобразить либо слева-направо или вверх "ногами". Я написал два коротюсеньких макроса, которые работают:
Код
Sub HorizontalSpiegeln()
For i = 1 To 20
    With Worksheets("buch 1")
        .Columns(i).Select
        Selection.Copy
        .Cells(1, 45 - i).Select
        .Paste
    End With
Next i
End Sub

Sub VertikalSpiegeln()
For i = 1 To 20
    With Worksheets("buch 1")
        .Rows(i).Select
        Selection.Copy
        .Cells(45 - i, 1).Select
        .Paste
    End With
Next i
End Sub
НО, после быстрого прохождения первых 6 - 7 строк или 6 - 7 столбцов Excel начинает сильно тормозить.

Что у меня в макросе не так?
Почему не срабатывает ScreenUpdating = False
 
Добрый день!
у меня есть есть несколько диапазонов из 4-х ячеек, в которые по клику ставятся крестики. В каждом диапазоне может быть только один крестик. Поэтому я сначала очищаю диапазон, а потом в нужную ячейку вношу крестик. Все работает, мелькает (как я понимаю при очищении ячеек)

Как это можно исправить? Или причина в чем-то другом?

Вот макрос:
Код
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        Dim i As Integer
        Dim r As Integer
       
        If Target.Cells.Count > 1 Then Exit Sub
            ActiveSheet.Unprotect Password:=""

            If Not Intersect(Target, Range("C11:F11", "C12:F12")) Is Nothing Then
                r = Target.Row

                If Target = vbNullString Then
                    i = 0
                Else
                    i = 1
                End If

                Application.ScreenUpdating = False
                
                For Each Z In Range(Cells(r, 3), Cells(r, 6))
                    Z.Value = vbNullString
                Next
                
                Application.ScreenUpdating = True

                Target.Font.Name = "Wingdings 2"
                If i = 0 Then
                    Target = "Ð"
                Else
                    Target = vbNullString
                End If
            End If

             ActiveSheet.Protect Password:=""
Как разорвать связь Word-файла с таблицей Excel, создавшей этот файл
 
Добрый день!

Создаю Word-документ макросом из Excel-файла. Мне надо просто проверить правописание, после чего закрыть Word-файл без сохранения.

Файл создается. Но, после того, как я с ним поработал и хочу закрыть он сначала выдает запрос на сохранение, а когда я говорю "не сохранять" он пишет, что файл используется другим приложением или пользователем и в скобках пишет путь к Normal.dotm. Можно ли сделать так, чтобы этот созданный файл закрывался без запроса на сохранение или (если с запросом), чтобы по нажатию "не сохранять" он закрылся.

Вот текст макроса:

Код
Sub WordCreate()
    'On Error Resume Next

    Dim WordApp As Object
    Dim WordDoc As Object
    Dim ExcelTable As Range
    
    Dim i As Integer                       
    Dim Pos_Massnahme() As String          
    
    
    i = Sheets(ActiveSheet.Name).Cells(2, 2).Value
    
    
    Set ExcelTable = ThisWorkbook.Sheets("VD-LN").Range(Cells(8, 5), Cells(8 + i, 5))

    Set WordApp = CreateObject("Word.Application")
    WordApp.Visible = True 

    Set WordDoc = WordApp.Documents.Add

    ExcelTable.Copy
    WordApp.Selection.PasteExcelTable LinkedToExcel:=False, WordFormatting:=False, RTF:=False

    Application.CutCopyMode = False

    Set WordDoc = Nothing
    Set WordApp = Nothing          
End Sub
Ошибки при копировании листов книги
 

Добрый день!

Подскажите в чем ошибка.

Копирую два листа активной книги в новую:

Код
HomeDir = ThisWorkbook.Path
file_Prefix_name = "/2023-09-28"
file_name = HomeDir & file_Prefix_name & " VD-TestFile.xlsx"

Worksheets(Array("1 One", "2 Two")).Copy
With ActiveWorkbook
    .SaveAs Filename:= file_name
    .Close SaveChanges:=False
End With

Все работает. Теперь 2 проблемы.

Первая возникает на строке

Код
Worksheets(Array("1 One", "2 Two")).Copy

когда я скрываю копируемые листы. Пишет, что не может осуществить метод копирования.

Вторая – в строке

Код
.SaveAs Filename:= file_name 

если я вместо

Код
file_name = HomeDir & file_Prefix_name & " VD-TestFile.xlsx"

пишу

Код
file_name = HomeDir & file_Prefix_name & " VD-Newton, Isaac [130552].xlsx"

Пишет, что нет доступа к файлу.

Как мне избежать этих ошибок?
Почему один и тот же макрос, который просто загружает данные из текстового файла, ведет себя с разными файлами по-разному?
 
Добрый день!
Подскажите если знаете в чем кроется причина. Макрос загружает из текстового файла, в котором поля разделены точкой с запятой, таблички на листы Excel. Макрос для всех листов один и тот же. Текстовые файлы однотипные. Ну текст он и в Африке текст...
Так вот, на одном листе все загружается нормально, а на другом, вроде как добавляются колонки слева, в которые и происходит запись (это видно по кнопкам, которые уезжают вправо).

Для примера удалил все, что можно. Оставил только сам макрос (который был записан средствами Excel, с последующими незначительными изменениями).
В файле два листа, на каждом кнопка "загрузить".Лист test1 грузит из файла test1.txt,  а лист test2 - из файла test2.txt (имена листов соответствуют названию файлов) с test2 все нормально, a test1 глючит.

Прикладываю сам excel файл и ещё оба текстовых файла - все должны лежать в одной папке.
Да, в текстовых файлах текст - это просто символы юникода, поскольку текстовое (читаемое) содержимое должно быть зашифровано.
Сам макрос:
Код
Dim file_name As String

file_name = ThisWorkbook.Path & "\" & ActiveSheet.Name & ".txt"
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & file_name, Destination:=Range("$A$4:$N$100"))
    .Name = "Vertragsansicht_1"
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = False
    .RefreshPeriod = 0
    .TextFilePromptOnRefresh = False
    .TextFilePlatform = 65001
    .TextFileStartRow = 1
    .TextFileParseType = xlDelimited
    .TextFileTextQualifier = xlTextQualifierDoubleQuote
    .TextFileConsecutiveDelimiter = False
    .TextFileTabDelimiter = False
    .TextFileSemicolonDelimiter = True
    .TextFileCommaDelimiter = False
    .TextFileSpaceDelimiter = False
    .TextFileColumnDataTypes = Array(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2)
    .TextFileTrailingMinusNumbers = True
    .Refresh BackgroundQuery:=False
End With

Вот, собственно и все. Ума не приложу в чем дело...
Как выбрать из массива случайным образом уникальные значения
 
Здравствуйте!
Колонка А заполнена словами. Выбираю случайным образом 5 слов и записываю в колонку В. Но иногда (поскольку выбор случаен) выбираются одинаковые слова.
Код
Sub aaa()
   Dim i As Integer
   Dim max As Integer
   Dim r As Integer

   max = WorksheetFunction.CountA(Sheets("Main").Columns(1))
   With Sheets("Main")
      For i = 1 To 5
         Randomize
         r = WorksheetFunction.Round(Rnd * (max - 1), 0) + 1
         .Cells(i, 2).Value = .Cells(r, 1)
         .Cells(i, 3).Value = r
      Next i
   End With
End Sub
Искал здесь и не только здесь - в основном приводится задача выбора из массива с повторами всех уникальных значений. А у меня в основном массиве повторов нет.
Я предполагаю, что сравнение надо делать не по словам, а по номеру строки, но... как-то у меня очень громоздко получается (и дополнительные массивы ввожу, и циклы в цикле в цикле...). Думаю есть какое-то простое решение.

Будьте добры, подскажите, как избежать повторов!
Как синхронизировать последовательность выполнение каоманд макроса и отображения их действия на листе?
 
Добрый день,

У меня программка-словарь отображает карточку с русским словом (в окне MsgBox) затем с его иностранным переводом (тоже в окне MsgBox, а затем вписывает эту пару в таблицу Excel. Написал так (If - потому что по случайному выбору сначала показывается либо русское слово, либо иностранное):
Код
    If l = 0 Then
        Msgbox De
        Msgbox Ru
    Else
        Msgbox Ru
        Msgbox De
    End If

    Sheets("Main").Cells(14 + i, 6).Value = De
    Sheets("Main").Cells(14 + i, 7).Value = "-"
    Sheets("Main").Cells(14 + i, 8).Value = Ru
Работает, но странно (во всяком случае для меня).
Сначала показывается первый Msgbox. После нажатия OK появляется второй Msgbox. После нажатия ОК, по идее в таблицу должны вписаться оба слова, но вписывается только одно (иностранное слово), в первую строку первой колонки. Затем после закрытия пары следующих Msgbox'ов - дописывается второе слово (русское из первой пары Msgbox'ов) в первую строку второй колонки и первое слово - во вторую строку первой колонки. И так все время. Ставлю точку прерывания - код отрабатывается правильно причем если программа останавливается на точке прерывания, то в таблицу все вносится корректно. Пробовал давать задержку в 1 сек. - не помогло.
Решил так:
Код
    If l = 0 Then
        Msgbox De
        Sheets("Main").Cells(14 + i, 6).Value = De
        Sheets("Main").Cells(14 + i, 7).Value = "-"
        Msgbox Ru
        Sheets("Main").Cells(14 + i, 8).Value = Ru
    Else
        Msgbox Ru
        Sheets("Main").Cells(14 + i, 7).Value = "-"
        Sheets("Main").Cells(14 + i, 8).Value = Ru
        Msgbox De
        Sheets("Main").Cells(14 + i, 6).Value = De
    End If
но как-то некрасиво получается одинаковые команды дублировать.

Подскажите, плз. как это исправить. Может это только у меня "кривой" Excel (или руки :)) Вот "облегченный" файл вкладываю. Посмотрите если не лень...
Вернуть кирилицу вместо вопросительных знаков в меседж-боксе
 
Добрый день.

У меня немецкая Windows (и соответственно и Офисы, и региональные настройки тоже немецкие). Отображаю в MsgBox текстовое содержимое ячейки:
Код
MsgBox Sheets("Tabelle1").Cells(1, 1)

Если в ячейке текст написан по-русски - отображаются только вопросительные знаки.
Поискал в сети - советуют менять региональные настойки. Для меня это не решение.

Есть ли возможность показать фразу по-человечески, не меняя системных настроек?

Спасибо!
Функция для нахождения значения ячейки по ее адресу без использования ДВВССЫЛ
 
Здравствуйте,
в моем файле большое количество данных с разных листов книги (все листы сделаны по одному шаблону)  собирается в одной таблице (каждая строка содержит основные данные какого-то одного листа). Поскольку листы с данными и записи в эту общую таблицу добавляются в процессе работы, нельзя заранее знать данные какого листа будет собирать строка. Но первая ячейка каждой строки содержит имя связанного с ней листа, а все остальные ячейки всегда показывают данные хранящиеся в одинаковых ячейках листов. Таких ячеек у меня в таблице почти 10 000.

Чтобы не использовать функцию ДВВССЫЛ (из-за ее "ресурсопотребления") я создал простенькую пользовательскую функцию
Код
Public Function CellValue(ByVal ShName As String, ByVal Row As Integer, ByVal Col As Integer) As String
   CellValue = Sheets(ShName).Cells(Row, Col).Value
End Function

Скажите, пожалуйста, такое решение "легче" чем функция
Код
ДВВССЫЛ(СЦЕПИТЬ("'";ДВВССЫЛ(АДРЕС(СТРОКА();1));"'";"!";АДРЕС(5;3)))

или, если из умной таблицы

Код
ДВВССЫЛ("'"&[@№]&"'!C5")
VBA. Гиперссылка на нужную ячейку соседнего листа книги, адрес которой определяется по ее содержимому
 
Есть книга  Excel в которой около 350 листов. Из них один лист служебный (Dienstblatt) со всякими списками, именнованными диапазонами и пр. Другой (Main) - сводная таблица с самыми важными данными со всех остальных листов и остальные листы - карточки клиентов с различной информацией о клиента (имена - в цифрах от 1 и до последнего).
По сути лист Main является листом оглавления, поскольку у него в колонке А перечень всех номеров существующих листов-карточек клиента, а в колонке В - стрелочка, нажав на которую, открывается нужный лист клиента.
Листы клиентов в ячейке А1 дублируют имя листа (номер клиента) и также имеют стрелочку-гиперссылку на соответствующую строку листа Main. Гиперссылка (по формуле) читает номер клиента в ячейке А1, находит это число в колонке А:А листа Main, определяет номер строки и перносится на ячейку А этой строки. Количество листов-клиентов постоянно меняется (номера у уже существующих листов не меняются - новые клиеты получают следующие по возрастанию номера).
Когда появляется новый клиент, добавляется лист клиент, а в сводную таблицу (лист Main) просто добавляется строка, в ячейку А которой впечатывается новый номер (таблица оформлена как умная таблица, поэтому все формулы, собирающие данные с листа клиента, в нужные ячейки вставляются автоматически).
Все работает, но слегка притомаживает. Более того, сейчас я готовлю новый макет файла и столкнулся с тем, что моя реалиазиция ну ОЧЕНЬ не оптимальная и чревата ошибками.

Сейчас все вышеописанные действия выполняются формулами:
Переход с листа Main:
Код
=ГИПЕРССЫЛКА("["&Dienstblatt!$B$1&"]"&ДВССЫЛ(АДРЕС(ЯЧЕЙКА();1))&"!$A$1";"►")
Номер листа-клиента в ячейке А1:
Код
=ЗНАЧЕН(ПСТР(ЯЧЕЙКА("filename";A1);ПОИСК("]";ЯЧЕЙКА("filename";A1))+1;65535))
Переход с листа-клиента на соответствующую строку листа Main:
Код
=ГИПЕРССЫЛКА("["&Dienstblatt!$B$1&"]Main!"&АДРЕС(ПОИСКПОЗ(A1;Main!A:A;0);1);"◄")

Я думаю, что если заменить эти три формулы на макросы, работа с файлом ускорится. Я поискал решение и у нас на сайте и вообще, но то ли не нашел, то ли не понял. Например, имя листа и ссылку на лист Main я вставляю так:
Код
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh Is Me.Sheets("Main") Or Sh Is Me.Sheets("Dienstblatt") Then Exit Sub
With Sh
    .Range("C1") = .Name
    .Hyperlinks.Add Anchor:=.Range("A1").Offset(i), Address:="", SubAddress:="Main!A1"
End With
End Sub
но у меня при этом нарушается форматирование ячейки со ссылкой. И я не могу пока попасть на нужную строку листа Main...

Вопрос: как это сделать с помощью макросов и ускорит ли это действительно работу файла?

И 2 пожелания:
- хотелось бы сделать так, чтобы макрос вставленный в ячейку не ломал форматирование этой ячейки (у меня, в моих попытках написать нужный макрос, меняется размер шрифта стрелки и появляется подчеркивание).
- было бы неплохо сделать так, чтобы ячейка с номером листа становилась гиперссылкой (что бы вообще убрать колоку В:В с листа Main и освободить ячейку В1 на листе-клиенте) но это, конечно, так - хотелки.

Прикладываю файл. Удалил из него всю "лишнюю" информацию. Оставил только 5 пустых листов-клиентов и лист оглавления.
Помогите с макросами, плз.

И с Праздником всех наших дорогих женщин!
Изменено: vadi61 - 08.03.2020 14:47:17
Как скрыть диапазон ячеек оставив все вокруг видимым?
 
Есть такая задача. Решения у меня пока нет.
Лист Excel, разделен на две половины (левую и правую). На правой половине листа Excel находится описание событий связанных с клиентом (следующие друг за другом строки), а на левой данные о клиенте. Для ввода данных есть отдельные поля. Потом, после их заполнения, формируется отдельная запись о клиенте в нужном формате. Так вот эта запись должна быть видна, а все введенные данные нужно скрыть (просто, чтобы не мешали). При этом все строки должны остаться видимыми. С помощью группировки строк так сделать не удастся, а как - не представляю. Таких листов в книге около 200, в перспективе может дойти до 300 (больше не будет).

Например, во вложенном файле диапазон А11:G29 должен быть скрыт, а оставшаяся часть строк 11 - 29 должна остаться видна.

Я предполагаю, что может быть какой-то макрос, который при сворачивании строк будет перезаписывать содержимое правой части, но думаю, что это здорово затормозит работу файла. Поэтому вопрос: это решаемо "малой кровью" (еслида, то как) или стоит искать в принципе другой подход в организации таблиц?
Можно ли сгруппировать строки не по всей длине?
 
Есть лист Excel, разделенный на две половины (левую и правую). На правой половине, в каждой строке находятся данные, которые постоянно должны быть видимы, а в левой - некоторые строки должны быть свернуты. Но группируя строки в левой половине автоматически группируется все строка, (включая и правую половину). Существует ли какой-нибудь способ это обойти. Разделить данные на два листа нельзя.

На всякий случай прикладываю файл, в котором строки с 10 по 14 на розовом фоне должны быть свернуты, в то время как все строки на голубом фоне должны быть видны.

Думаю, что нельзя, но а вдруг...
Как макросом назначить действие на клик мыши для всех листов книги
 
Простите за наивный вопрос. У меня есть макрос, который при клике на ячейках определенного диапазона ставит в ней "EU", а при повторном клике очищает ячейку.
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub

If Not Intersect(Target, Range("D7:D10")) Is Nothing Then
    If Target = vbNullString Then
        Target = "EU"
    Else
        Target = vbNullString
    End If
    
    Application.EnableEvents = False
    Cells(10, 21).Select                 ' после каждого клика я делаю активной постоянно одну и ту же ячейку 
    Application.EnableEvents = True
End If
End Sub

Все нормально работает... до тех пор пока я все делаю на одном листе. А теперь у меня таких "одинаковых" листов много. Как и где написать такой макрос, чтобы он выполнялся на всех листах, кроме листа с именем Main. Пробовал в ЭтаКнига, создавал Модуль - не работает.

как заполнить выпадающий список элементами взятыми не из диапазона ячеек, а из одной ячейки
 
Добрый день!
У меня задача связать два выпадающих списка. Список значений второго зависят от выбранного значения в первом. Решение такой задачи описано и у нас на форуме, и в и-нете.
Но там для этого сначала создаются списки. У меня же в списке всего 3 значения и я подумал, что достаточно одной формулы, которая сформирует элементы второго списка в какой-то ячейке и останется только связать второй список с этой ячейкой. И тут проблема - не могу заполнить список набором элементов, список воспринимает все как один элемент.

Есть ли какой-нибудь способ объяснить списку, что это несколько элементов?
Разделители между элементами в ячейке могу ставить любые - зависит от меня.

1.xlsx (12.07 КБ)  
Изменено: vadi61 - 07.02.2020 15:16:27
Результат минус НОЛЬ при вычитании визуально равных чисел
 
Добрый день!

Подскажите откуда берется минус в этом простом вычитании (строка 2):
Изменено: vadi61 - 15.01.2020 10:31:21 (заменил файл)
Помоготе отключить перенос текста в ячейке
 
Добрый день.
Во вложенном файле не получается отжать кнопку "Перенос текста". Это только у меня (хотя с другими файлами все нормально) или что-то с форматированием не так?
Excel отображает пустой лист, хоть данные на листе есть. Что делать?
 
Люди добрые, подскажите что это такое, как это исправить и почему это могло произойти!

В одном файле (кусок файла прикладываю) на нескольких листах перестали отображаться либо все (лист 2), либо выборочные (лист 1) номера строк. Кроме того, на некоторых листах (лист 2) перестали отображаться ВСЕ данные. При этом, если выделить ячейку, то в строке формул можно видеть ее содержимое. И фильтры видят содержимое листа. А сам лист его не отображает.

Первый раз с таким сталкиваюсь.
Excel из пакета офисов 2013, Windows 10.
Как убрать плавное перемещение зеленой границы ячейки при клике на ячейке?
 
Люди добрые! Подскажите как убрать плавное перемещение зеленой границы при клике на ячейке в Excel 2013? Купил новый комп. Поставил Office. Ну не помню, где это убирается... и найти не могу... ни в параметрах, ни в интернете подсказку. Там реестр править посылают или другие сложности предлагают, но я помню, что вроде галка была в Параметрах. Или ошибаюсь, давно последний раз Excel настраивал.
Можно ли в формуле Excel в качестве условия учесть отфильтрована таблица или нет
 
Здравствуйте уважаемые форумчане!

Решаема ли такая задача без макроса? У меня есть таблица разбитая на группированные вертикальные блоки (диапазоны).
В таблице, например, 3 колонки: в первой - наименование предмета, во второй - кто купил, в третьей - когда купил.
Наименование предмета я пишу один раз в верхней строке диапазона, а кто и когда вписываю в каждую строку

Поставил фильтр. И столкнулся с тем, что после фильтрации (по фамилии или по дате) в некоторых строках первого столбца остаются пустые ячейки (что и естественно, конечно). Таким образом видно кто и когда купил, но не видно что :)

Можно ли формулой в зависимости от того, отфильтрована таблица или нет заполнять или не заполнять ячейку?

Понимаю, что изложил сложно, поэтому вкладываю файл
Как сделать выпадающий список Checkbox'ов
 
Добрый день знающим людям!

Возникла задача заполнения определенной ячейки цифрами, каждая из которых соответствует номеру какой-то задачи в списке:
1. Коррекция зрения
2. Стабилизация дыхания
и т. д.

Я подумал, что самый простой (для пользования) вариант - это всплывающее окно с флажками.
Поставил галочки на 1 и 4 Checkbox'е и в ячейке появилось 1,4. Можно ли это реализовать?

Если да, то задача усложняется. Потому что, заполнять надо не одну, а много ячеек. Эти ячейки описывают задачи разных людей, при этом у каждого свой список задач.

То есть, если ячейка соответствует Иванову, то во всплывающем окне одни Checkbox'ы, а если Петрову - другие. При этом я заранее не знаю кому эта ячейка будет соответствовать.

Выполнимо ли это?

Во вложенном файле: лист 1 - исходные данные, лист 2 - результирующая таблица
Изменено: vadi61 - 28.02.2017 11:55:53
Копирование с листа на лист с сохранением размера ячеек
 
Копирую лист со всем его содержимым на новый лист. Копируется все (включая ширину столбцов), кроме высоты ячеек.
Понимаю, что меня сейчас начнут учить копировать листы, поэтому прилагаю файл, в котором лист 1 копируется без проблем, а лист 2 с проблемой высоты ячеек.

Причем, проблема возникает ТОЛЬКО на 2007-м офисе. На 2013-м оба листа копируются нормально.
(копирую выделением всей таблицы кликом на левый верхний угол)

Нечто подобное уже обсуждалось здесь в архиве, но там вроде все решилось. Думал сглючил Excel. Перезагрузился - аналогично.
Кто-нибудь с таким явлением сталкивался еще?
Брать со смещением данные из календарного диапазона
 
Здравствуйте!
Может я не совсем правильно назвал тему, но лучшего названия увы не нашел.

Задача такая. Есть исходная таблица календарь-данные, в ней верхняя строка всегда 1-е число месяца, а день недели может быть разный. И есть конечные таблицы (которые надо заполнить данными из исходной таблицы), поля которой отображают данные по дням недели. Я не могу связать ячейки одной и другой таблицы "напрямую", так как не знаю каким дням недели будут соответствовать ячейки исходной таблицы в других месяцах.

Я нашел такое решение (но оно наверняка не оптимальное).
Создаю "промежуточную" таблицу календарь-данные, в которой верхняя строка всегда Понедельник, а сам календарь (в зависимости от месяца) перемещается вверх или вниз. Нахожу смещение (с помощью ПОИСКПОЗ) для текущего месяца. Заполняю эту промежуточную таблицу "со смещением", а уже ее связываю с конечной таблицей.

Конечно, промежуточную таблицу можно не создавать, а в формулах ячеек конечной таблицы учесть это смещение. Но это сути не меняет (только становится менее наглядно и сложно проверять). Мне кажется, что все это можно сделать "одним махом", но знаний не хватает.

Подскажите более простое решение, плз (если оно, конечно, есть). Да, все это нужно сделать без макросов и пользовательских функций.

Пример сделал.

Спасибо.
Отформатировать значение, получаемое формулой
 
Помогите пожалуйста получить в ячейке значение в виде времени
08:00 <переход на новую строку> 09:00 (или, в крайнем случае 08-00<переход>09-00). Переход на новую строку получается, а вот с форматом беда.
С двоеточием вообще не получается, а с дефисом в некоторых ячейках все нормально, а в некоторых вместо 08-00 пишет 00-80 (значения берутся из одного источника, формулы тоже одинаковые)

Короче, для ясности вложил файл.
Наверняка как-то решается, но...
Как обратиться к отдельному столбцу именованного диапазона
 
Добрый день!
Есть именованный диапазон "Диап_1" A1:E4
AB C D E
11 Иванов 2 02.11.1973 тех
22 Петров 8 18.06.1990 кон
33 Сидоров 4 25.07.1986 тех
44 Федоров 7 11.03.1998 норм
Можно ли обратиться к ячейкам B1:B4 (напр., для заполнения выпадающего списка) как к части диапазона (типа как в "умных таблицах" по названию столбца) или надо отдельный диапазон создавать?
Изменено: vadi61 - 06.12.2016 11:03:45
Поиск повторов артикулов, оптимизировать поиск в макросе
 
Добрый день, всем!
Есть у меня таблица, в которой один из столбцов является арт.-№ товара. Арт-номера иногда повторяются и мне нужно находить повторы и как-то их обрабатывать. Я условным форматированием подкрасил эти повторы. Но этого оказалось мало. Вижу сиреневый номер, а его пару (а то и большее число повторов) приходится искать вручную.
Написал процедуру, которая находит эти повторы и записывает номера строк соответствующие данному номеру в отдельную колонку.
Код
Sub GetID(sCol As String)
Dim iRow As Integer
Dim i As Integer
Dim j As Integer

iRow = Cells(65536, sCol).End(xlUp).Row

Application.ScreenUpdating = False

Range(sCol & "1:" & sCol & iRow).Offset(0, 9).ClearContents

For i = 1 To iRow
    If Range(sCol & i).Font.ColorIndex <> 1 Then
        For j = 1 To iRow
            If Range(sCol & i).Value = Range(sCol & j).Value Then
                If j <> i Then
                    Range(sCol & i).Offset(0, 9).Value = Range(sCol & i).Offset(0, 9).Value & ", " & j
                End If
            End If
        Next j
    End If
Next i

Application.ScreenUpdating = True

End Sub
У меня таких диапазонов несколько, поэтому я передаю в процедуру букву колонки, а не задаю ее явно.
Все работает... но медленно. Например, на 400 строках из которых условное форматирование выделило в общей сложности 65 повторов процедура работает около 6 секунд.

Нельзя ли это как-то оптимизировать?
Изменено: vadi61 - 24.06.2016 17:39:08
Как заставить работать формулу с функцией ТЕКСТ на другом языке.
 
У меня немецкая Windows, а файлы используются как в Германии, так и в России.

В ячейке I6 находится текст
В ячейке I90 - дата
Мне нужно соединить содержимое этих ячеек.

В ячейке I91 я пишу формулу по-немецки:
=I6&"."&WECHSELN(TEXT(I90;"TT.MM.JJ");".";"")

При открытии файла в русской ОС формула отображается по-русски:
=I6&"."&ПОДСТАВИТЬ(ТЕКСТ(I90;"TT.MM.JJ");".";"") и работает неправильно, так как нужно:
=I6&"."&ПОДСТАВИТЬ(ТЕКСТ(I90;"DD.MM.YY");".";"")

Как обычно поступают в таких случаях. Нужно писать свою функцию или есть проще решение?
Несоответствие типов в макросе
 
Уважаемые Знатоки!

У меня в таблице есть 8 значений (I98:I105) некоторые из которых - нули. Мне нужно собрать их в массиве, выбросив эти нулевые значения.
Например, значения в таблице:
70
7625.155 (это не число, а строка)
28
7028.155 (это тоже строка)
0
0
5
7500.150 (и это тоже)
В макросе пишу
Код
For i = 0 To UBound(aFilter_TMP)
  aFilter_TMP(i) = Sheets("Form2").Range("I" & i + row_two%).Text
Next i

n = 0
For j = 0 To UBound(aFilter_TMP)
  If aFilter_TMP(j) <> 0 Then
    aFilter(n) = aFilter_TMP(j)
    n = n + 1
  End If
Next

У меня Excel 2013. Все работает нормально.

У коллег - Excel 2016.
На строке If aFilter_TMP(j) <> 0 Then выдает ошибку несоответствие типов  (как мне сказали. Сам не видел).  Подскажите, что здесь может быть не так.
Может во второй строке вместо Range... Text написать Value?
Или If aFilter_TMP(j) <> 0 Then заменить на If (aFilter_TMP(j) <> 0) Оr (aFilter_TMP(j) <> "0") Then?

Проблема в том, что мне не на чем проверить. У меня нет Офисов 2016, а коллеги находятся за 2000 км в другой стране.
Изменено: vadi61 - 19.04.2016 00:32:32 (добавил коментарии)
Как заменить группу If'ов на один Case
 
Подскажите плз. как корректно заменить какое-то количество операторов If на один Case.

Есть такой код
Код
If Not Intersect(Target, Range("I9, I10, I19, N19, S19, X10, X11, X12, X20")) Is Nothing Then
действие 1
End If
If Not Intersect(Target, Range("I12")) Is Nothing Then
действие 2
End If
If Not Intersect(Target, Range("D5")) Is Nothing Then
действие 3
End If
и т. д.

Хотелось бы заменить все это на Select Case
Пишу
Код
Select Case Target
      Case Range("I9"), Range("I10"), Range("I19"), Range("N19"), Range("S19"), Range("X10"), Range("X11"), Range("X12"), Range("X20")
             действие 1
      Case Range("I12")
             действие 2
      Case Range("D5")
             действие 3
      и т. д.
End Select

Но мне кажется это не совсем правильно, так как здесь не проверяется пересечение диапазонов. А как правильно пока не понял.

И еще один теоретический вопрос. Действительно Case оптимальнее группы If'ов или нет смысла "заморачиваться"?
Изменено: vadi61 - 18.03.2016 01:58:47
Защитить лист запретом на выделение ячеек
 
В архиве форума по Excel в теме   Запрет на редактирование формулы в отдельной ячейкеув. Slan предложил решение запрета на выделение отдельной ячейки макросом, который какую бы ячейку не кликнули активирует всегда одну и ту же, заранее заданную, ячейку (в его примере Е7)

Но этот метод не срабатывает когда выделяется больше одной ячейки (включая объединенные ячейки).
А как сделать так, чтобы при выделении любой ячейки или диапазона ячеек выделялась только одна заданная (напр., А1)
Что оптимальнее поиск или вычисление
 
Добрый день!
Теоретический вопрос. Я могу получить нужное мне данное двумя путями:
поиском
Код
=ИНДЕКС(Source_Daten;ПОИСКПОЗ(Q6;Source_ID;0);1)
и вычислением
Код
=100*R6/ПСТР(Q6;6;3)
Таких ячеек у меня больше 1000.
Отсюда и вопрос: какой из этих двух вариантов быстрее и требует меньше ресурсов?
Страницы: 1 2 След.
Наверх