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

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

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

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

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

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


попробовал различные спопобы - замена поиском и заменой, циклом по диапазону - если кодом не помогает если вручную срабатывает ...
...
Рейтинг: 0 / 0
03.12.2004, 12:22
    #32811539
Ирча
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблемы с форматами ячеек при автофильтре, суммировании
В специальной вставке есть Вставить значание, вставляется без форматов, а число остается числом
Попробуй
...
Рейтинг: 0 / 0
03.12.2004, 12:27
    #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
04.12.2004, 04:33
    #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
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / проблемы с форматами ячеек при автофильтре, суммировании / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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