2

У меня есть следующая формула в Excel:

=IF(A5="File Start","File Creation DateTime = "&MID(C5,113,13),IF(A5="Start","Statement Date = "&MID(C5,65,8)&" | Opening Balance Date = "&MID(C5,88,8),IF(A5="Statement","Statement Date = "&MID(C5,65,8)&" | Value Date = "&MID(C5,108,8)&" | Booking Date = "&MID(C5,116,8),IF(A5="End","Statement Date = "&MID(C5,65,8)&" | Closing Balance Date = "&MID(C5,88,8),""))))  

Что дает результат в соответствии с:

Дата заявления = 20110217 | Дата валютирования = 20101126 | Дата бронирования = 20110218

Как бы я хотел, чтобы это выглядело так:

Дата заявления = 20110217 | Дата валютирования = 20101126 | Дата бронирования = 20110218

или же

Дата заявления = 20110217 | Дата валютирования = 20101126 | Дата бронирования = 20110218

Где жирный шрифт в варианте 2 разных цветов.

1 ответ1

0

Я не думаю, что вы можете изменить свою формулу, чтобы изменить шрифт. Однако, если вы можете принять копирование и вставку результата формулы в новую ячейку, то вы можете манипулировать текстом в этой ячейке с помощью VBA.

Приведенный ниже код копирует вашу строку «Дата отчета = 20110217 | Дата валютирования = 20101126 | Дата бронирования = 20110218» из ячейки A5, а затем вставляет ее в B5. (Вам может понадобиться «вставить специальные / значения».) Затем он проверяет строку в B5, ища начальную позицию числовых дат, которые, как я предполагал, всегда будут 8 цифрами. Наконец, он "выделяет жирным шрифтом" все цифры в строке, что было вашим первым вариантом переформатирования строки.

ChangeNumberFontInStringToBold()
'1.  Copy & paste the string to a new cell.
Range("A5").Select
Selection.Copy
Range("B5").Select
ActiveSheet.Paste

'2.  Find the start position of the numerics; load into array
Range("B5").Select

mytext = Range("b5").Text
myLength = Len(mytext)

Dim mystart() As Integer        'array to hold the starting positions of the numerics
Dim j
j = 0


For i = 1 To myLength
    myChar = Mid(mytext, i, 1)
    If IsNumeric(myChar) Then
        ReDim Preserve mystart(j)
        mystart(j) = i
        j = j + 1
        i = i + 10
    End If
Next i

'3.  Bold all the numerics
For k = 0 To UBound(mystart)
    With ActiveCell.Characters(Start:=mystart(k), Length:=8).Font
        .Name = "Arial"
        .FontStyle = "Bold"
    End With
Next k

'4. Park the cursor elsewhere
Range("C5").Select

End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .