2012-03-17 3 views
4

Ниже приведен код VBA. Sheet2 содержит все значения в общем формате. После запуска кода значения в столбце «C» Sheet3 содержат экспоненциальные значения для чисел, которые составляют 13 или более цифр.Как форматировать колонку в формат номера в листе Excel?

Что нужно сделать, чтобы столбец «C» Sheet3 не содержал экспоненциальные значения?

private Sub CommandButton1_Click() 
Dim i, j, k As Variant 

k = 1 
For i = 1 To 30000 
If Sheet2.Range("c" & i).Value >= 100 And Sheet2.Range("c" & i).Value < 1000 Then 
Sheet3.Range("a" & k).Value = Sheet2.Range("a" & i).Value 
Sheet3.Range("b" & k).Value = Sheet2.Range("b" & i).Value 

Sheet3.Range("c" & k).Value = Sheet2.Range("c" & i).Value 

k = k + 1 
End If 
Next 

End Sub 
+0

, пожалуйста, объясните еще кое-что. Вы просто хотите форматировать числа в определенном столбце или что? – elrado

+0

да хочу отформатировать только требуемый столбец – Punith

+0

Я не вижу этого в 13, а скорее на 15-й цифре. Вы хотите получить результат для отображения или выполнить математику? сохраняется как текстовая строка и преобразуется в значение, чтобы использовать его? – datatoo

ответ

20

Это будет форматировать столбец A как текст, B как общий, C в виде числа.

Sub formatColumns() 
Columns(1).NumberFormat = "@" 
Columns(2).NumberFormat = "General" 
Columns(3).NumberFormat = "0" 
End Sub 
+0

Я пытаюсь сделать это для конкретного листа в конкретной книге «Учебники» («B.xlsm»). ActiveSheet.Columns («1»). NumberFormat = "0 «И это, похоже, не делает этого для меня. Есть идеи? – user248884

1

Если 13 цифра «номер» действительно текст, который вы не собираетесь делать какие-либо математические на нем, вы можете поставить перед ним апостроф

Sheet3.Range("c" & k).Value = "'" & Sheet2.Range("c" & i).Value 

Но я не» т увидеть, как 13-значный номер будет когда-либо пройти заявление If, потому что он всегда будет больше, чем 1000. Вот альтернативная версия

Sub CommandClick() 

    Dim rCell As Range 
    Dim rNext As Range 

    For Each rCell In Sheet2.Range("C1:C30000").Cells 
     If rCell.Value >= 100 And rCell.Value < 1000 Then 
      Set rNext = Sheet3.Cells(Sheet3.Rows.Count, 1).End(xlUp).Offset(1, 0) 
      rNext.Resize(1, 3).Value = rCell.Offset(0, -2).Resize(1, 3).Value 
     End If 
    Next rCell 

End Sub 
0

Извините врезаться старый вопрос, но ответ подсчитать длину символьный ce ll, а не его значение.

CellCount = Cells(Row, 10).Value 
If Len(CellCount) <= "13" Then 
'do something 
End If 

Надеюсь, что это поможет. Cheers

Смежные вопросы