powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / проблемы с форматами ячеек при автофильтре, суммировании
6 сообщений из 6, страница 1 из 1
проблемы с форматами ячеек при автофильтре, суммировании
    #32811095
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вставляю данные на лист эксел так:
XL.ActiveSheet.PasteSpecial format:="Текст", Link:=False, DisplayAsIcon:=False

все классно, только числа сохранены как текст. и если нужно просуммировать или воспользоваться автофильтром то ничего не проходит.

если задать задать числовой формат для ячеек - это не приводит к конвертации уже имеющихся значений в числа.

можно сделать код циклом по используемому диапазону - повторный ввод значения ячейки на его же значение, при этом произойдет конвертация...

может подскажете как пооптимальнее преобразовать
или может есть метод аксесса чтоб это скопом сделать или копировать по другому ?
...
Рейтинг: 0 / 0
проблемы с форматами ячеек при автофильтре, суммировании
    #32811218
Фотография funddd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
абсолютно навскидку: а если не указывать формат?
...
Рейтинг: 0 / 0
проблемы с форматами ячеек при автофильтре, суммировании
    #32811250
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда получается простая вставка - переносятся форматирование ячеек (это не нужно)

с числами имеющими знаки после запятой все в порядке с целыми та же беда


попробовал различные спопобы - замена поиском и заменой, циклом по диапазону - если кодом не помогает если вручную срабатывает ...
...
Рейтинг: 0 / 0
проблемы с форматами ячеек при автофильтре, суммировании
    #32811539
Фотография Ирча
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В специальной вставке есть Вставить значание, вставляется без форматов, а число остается числом
Попробуй
...
Рейтинг: 0 / 0
проблемы с форматами ячеек при автофильтре, суммировании
    #32811558
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пока остановился на таком варианте:
немного подтормаживает, но делать нечего.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Dim Cols, Rows
Dim Col, Row

Cols = XL.ActiveSheet.UsedRange.Columns.Count
Rows = XL.ActiveSheet.UsedRange.Rows.Count

For Col =  1  To Cols
    For Row =  1  To Rows
        If IsNumeric(XL.Cells(Row, Col).FormulaR1C1) Then
        XL.Cells(Row, Col).Value2 = CDbl(XL.Cells(Row, Col).FormulaR1C1)
        End If
     Next Row
Next Col
...
Рейтинг: 0 / 0
проблемы с форматами ячеек при автофильтре, суммировании
    #32812929
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АлексейКвставляю данные на лист эксел так:
XL.ActiveSheet.PasteSpecial format:="Текст", Link:=False, DisplayAsIcon:=False

все классно, только числа сохранены как текст. и если нужно просуммировать или воспользоваться автофильтром то ничего не проходит.

если задать задать числовой формат для ячеек - это не приводит к конвертации уже имеющихся значений в числа.

можно сделать код циклом по используемому диапазону - повторный ввод значения ячейки на его же значение, при этом произойдет конвертация...

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

вааще-то при указанном типе вставки числа вставляются как текст в случае,
если для диапазона, на который производится вставка ранее был установлен
текстовый формат.


Варианты
1) установить другой формат
2) использовать
ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
False
это как будто работатает при всех форматах, если данные вставляются из
вордовой таблицы, например.

3) чуть подправить макрос.
Например так.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
Public Declare Function timeGetTime Lib "winmm.dll" () As Long

Sub TestByRow()
  Dim tM&
  tM& = timeGetTime
  
  
  Dim tSheet As Worksheet
   
  Dim lngK&, lngL&
  
  Dim fK, tVal
  
 
    
  Set tSheet = Application.ActiveSheet
    
  
  With tSheet.UsedRange
        
    fK = .FormulaLocal
   
    
    If IsArray(fK) Then

    'массив
      For lngK =  1 & To .Rows.Count
        For lngL =  1 & To .Columns.Count '
          
            tVal = fK(lngK, lngL)
            If IsNumeric(tVal) Then fK(lngK, lngL) = CDbl(tVal)
        
        Next
      Next
      
    ElseIf IsNumeric(fK) Then
    'одиночное значение
    
        fK = CDbl(fK)
        
    End If
    'сбросим формат в "общий"
    .NumberFormat = "General"
    'установка значений
    .FormulaLocal = fK
  
  End With
  
  
  
  MsgBox timeGetTime - tM
  
End Sub

ЗЫ
Алексей, за что ты так не любишь массивы?
:))
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / проблемы с форматами ячеек при автофильтре, суммировании
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]