Уменьшите большое число до нескольких необходимых цифр - PullRequest
0 голосов
/ 01 марта 2019

Я только начал использовать VBA для работы, и у меня практически нет опыта, поэтому любая помощь / предложения высоко ценятся!

Я работаю над автоматическим отчетом, где мне нужно использовать номер устройства для поиска данныхпринадлежность к нему.Например, 90902018436270200 - это fullNumber, необходимые цифры - 18436.

Кроме того, числа отображаются как 9.0902E + 16, прежде чем я копирую их и изменяю их со значения по умолчанию на числа.

Количество перед числами всегдаоставайтесь прежними, однако требуемое число редко может быть длиной всего 4 цифры.

Я пытался удалить первые цифры с помощью:

If Left(Range("A5"), 1) = "9" Then
    Range("A5").Value = WorksheetFunction.Replace(Range("A5").Value, 1, 4, "")

Однако при использовании этого числа фактически становится больше, что яПредположим, это из-за экспоненциальной записи, которую мне, вероятно, придется как-то удалить.

This is the sheet i need to Filter

На снимке экрана вы видите большое число, которое я отредактировалс формулой.

Числа на левой стороне, которые указывают имя устройства для использования = vlookup Мне нужно отфильтровать ненужные числа, или он не будет распознавать, из какой строки взять данные.На другом листе у меня есть ячейка, пользователь может ввести номер устройства, после чего он должен найти данные, соответствующие номеру этого устройства.Однако формула = Vlookup не распознает необходимое число в необработанном / большом числе.

Это код, который я использую до сих пор, чтобы упорядочить данные для работы с формулой Excel.

Sub CorrectNames()

'replaces complicated names to easier ones

    Range("B3").Select
    ActiveCell.FormulaR1C1 = "10"
    ActiveCell.Offset(0, 1).Range("A1").Select
    ActiveCell.FormulaR1C1 = "20"
    ActiveCell.Offset(0, 1).Range("A1").Select
    ActiveCell.FormulaR1C1 = "50"
    ActiveCell.Offset(0, 1).Range("A1").Select
    ActiveCell.FormulaR1C1 = "100"
    ActiveCell.Offset(0, 1).Range("A1").Select
    ActiveCell.FormulaR1C1 = "1000"
    ActiveCell.Offset(0, 1).Range("A1").Select
    ActiveCell.FormulaR1C1 = "200"
    ActiveCell.Offset(0, 1).Range("A1").Select
    ActiveCell.FormulaR1C1 = "2000"
    ActiveCell.Offset(0, 1).Range("A1").Select
    ActiveCell.FormulaR1C1 = "500"
    ActiveCell.Offset(0, 1).Range("A1").Select

    'moves device digits to the left side and changes format

    Range(Selection, Selection.End(xlDown)).Select
    Selection.Cut
    ActiveCell.Offset(0, -9).Range("A1").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Selection.NumberFormat = "0."


End Sub

Sub ExposeDevicedigits()

If Left(Range("A5"), 1) = "9" Then
    Range("A5").Value = WorksheetFunction.Replace(Range("A5").Value, 1, 4, "")



End If

End Sub

Таблица данных, куда будут отправляться отфильтрованные результаты

1 Ответ

0 голосов
/ 01 марта 2019

Если 90902018436270200 в A5, то = MID (текст (A5,0), 7,5) вернет «18436» (TEXT преобразует значение A5 в текстовую строку, игнорируя любое странное форматирование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...