2016-07-18 1 views
1

Привет, я немного новичок в vba, поэтому я постараюсь как можно подробнее объяснить мою проблему. У меня есть набор данных в Excel в колонке A, у меня есть много имен файлов, как это:Вывести символы и поместить в новый столбец в Excel

1. AB000**1234**45.tif 
2. AB000**1235**45.tif 
3. AB000**1236**45.tif 
4. AB000**1237**45.tif 

и т.д ..

От этого я хочу, чтобы принять все сильные характеры и положить в колонке C так он будет выглядеть следующим образом:

1. 1234 
2. 1235 
3. 1236 
4. 1237 

и т.д ..

в настоящее время у меня есть код, который выглядит следующим образом:

Sub TakeOut 
    Dim str1 As String 
    Dim LR As Long 
    Dim cell As Range, RNG As Range 

    LR = Range("A" & Rows.Count).End(xlUp).Row 
    Set RNG = Range("A1:A" & LR) 

    For Each cell In RNG 
     L = Len(RNG) 
     If L > 0 Then 
      RNG = ... 
     End If 
    Next cell 

    Range("C:C").Columns.AutoFit 

End Sub 

Я попытался сосчитать влево (5) и вправо (6), но не знаю, как вынуть 4 символа, который я хочу. Упование вы можете помочь мне с этим.

+4

как 'MID (cell.Value, 6, 4)' ??? –

+0

RNG = mid (Cell, InStrRev (Cell, «1»), 4), это вырезает значение в ячейке в первом экземпляре 1 для четырех символов. – Lowpar

+0

@JessieQuick, вы проверили мой ответ ниже. Надеюсь, вы ищете этот метод? –

ответ

2

Если вы хотите, чтобы выделить сильные символы из строки. Попробуйте это ниже. Он примет все жирные символы в ячейке и поместит их в столбец C.

Надеюсь, что вы ищите это?

Sub get_bold_content() 
    Dim lastrow, i, j, totlength As Long 
    lastrow = Range("A" & Rows.Count).End(xlUp).Row 
    For i = 1 To lastrow 
     totlength = Len(Range("A" & i).Value) 
     For j = 1 To totlength 
      If Range("A" & i).Characters(j, 1).Font.Bold = True Then 
       outtext = outtext & Range("A" & i).Characters(j, 1).Text 
      End If 
     Next j 
     Range("C" & i).Value = outtext 
     outtext = "" 
    Next i 
End Sub 

enter image description here

+0

Aww thx alot это было то, что я искал !!: D – JessieQuick

+0

Спасибо за ваш ответ. Рад помочь всегда! –

2

Взгляните на Mid() Функция link.

использования в вашем случае:

Mid(cell.Value, 6, 4) 'First parameter is the string, 6 is the start character, 4 is length 
+0

Спасибо всем за повтор и помощь! Я многому научился от этого :) – JessieQuick

2

Самый простой способ без зацикливания бы что-то вроде этого:

Sub TakeOut() 
    Dim rng As Range 
    Set rng = Range("A1", Range("A" & Rows.Count).End(xlUp)) 
    rng.Offset(, 1) = Evaluate("IF(" & rng.Address & "="""","""",MID(" & rng.Address & ",6,4))") 
End Sub 
+0

Это было также приятно! но я не знаю, что происходит в ** Evaluate ("IF (" & rng.Address & "=" "" "," "" ", ** эта часть – JessieQuick

+0

Это просто возвращает пустую ячейку, если ячейка в столбец A пуст ... в общем случае это возвращает массив, подобный функции массива в листе. Таким образом, вам не нужно зацикливать.;) –

+0

ahh Я вижу спасибо :) – JessieQuick

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