Rama2018 Ответов: 3

Как мне...получить значения ячейки и поместить их в одну ячейку с подчеркиванием для некоторых ячеек


Здравствуйте сэр
не могли бы вы помочь мне написать код, чтобы добавить подчеркивание к одному или нескольким словам внутри ячейки ..например
в ячейке g1, h1, i1, j1, k1
я хочу получить значение всех этих ячеек и поместить его в ячейку a1
и я хочу добавить подчеркивание к cel h1 а клетка j1
h1 и j1 это число имеет формат, как ...1,000,000

значение ячеек g1, i1, k1 это слова

Итак, как я могу получить все это значение ячеек и поместить все в одну ячейку a1 с подчеркиванием только для h1 и j1
я хочу, чтобы кто-нибудь мог мне помочь
спасибо за все

Что я уже пробовал:

я пытаюсь получить значение ячеек (например G1, H1, I1 и K1) и поместите его в одну ячейку с подчеркиванием в ячейку H1 и J1

нравится, как показаны ниже :

G1     H1           i1          J1        K1
word1 1,000,000    word2     2,000,000   word3


я хочу использовать формулу Excel или Excel VBA, чтобы получить результат, как показано ниже
word1 1,000,000 word2 2,000,000 word3


withunderline для H1 и J1

3 Ответов

Рейтинг:
2

Maciej Los

Проверить это:

Option Explicit 'force variable declaration

Sub JoinTextAndUnderline()
    'variables
    Dim wsh As Worksheet
    Dim i As Integer, beg As Integer, lng As Integer
    Dim sTmp As String
    'initialize worksheet object
    Set wsh = ThisWorkbook.Worksheets("Sheet1")
    'set text to cell A1
    wsh.Range("A1") = wsh.Range("G1") & " " & wsh.Range("H1") & " " & _
        wsh.Range("I1") & " " & wsh.Range("J1") & " " & wsh.Range("K1")
    'change formatting
    'loop through the cells in column-range: (G:J)
    For i = 0 To 4
        sTmp = sTmp & wsh.Range("G1").Offset(ColumnOffset:=i) & " "
        Select Case i
            Case 1, 3
                'get the beginning of text to underline
                beg = Len(sTmp) - Len(wsh.Range("G1").Offset(ColumnOffset:=i).Text)
                'get the length of text to underline
                lng = Len(wsh.Range("G1").Offset(ColumnOffset:=i).Text)
                'underline
                wsh.Range("A1").Characters(beg, lng).Font.Underline = True
        End Select
    Next
    'clean up!
    Set wsh = Nothing
End Sub


Удачи вам!


Richard MacCutchan

Круто.

Maciej Los

- Спасибо, Ричард.

Рейтинг:
2

Richard MacCutchan

Что-то вроде:

Range("H1").Select
Selection.Font.Underline = xlUnderlineStyleSingle

Вы всегда можете найти пример кода, используя функцию записи макросов Excel.


Maciej Los

Я могу принять все, но не [выбрать]!
Правильный способ сделать это таков:

SheetName.Range("H1").Font.Underline = xlUnderlineStyleSingle

Richard MacCutchan

Прекрасно, но мое решение все еще работает.

Maciej Los

Я не говорил что это не работает ;)
Я пытался сказать, что использование метода [Select] - очень плохая практика программирования VBA, потому что он запускает несколько событий в MS Excel. Это может повлиять на использование процессора и оперативной памяти и т. д. - эффективность в целом.

Richard MacCutchan

Ну, я не специалист в программировании Excel. Я просто использую запись макросов, и если она работает, этого достаточно.

Maciej Los

:смеяться:
Да, на старте этого вполне достаточно. Но позже может возникнуть несколько проблем...
Овации,
Мацей

Rama2018

спасибо тебе брат за помощь но я хочу вот чего :
получите все значения ячеек (g1, h1, i1, j1, k1) и сложите все вместе в одну ячейку (A1)
после этого нужно, чтобы некоторые из этих значений ячеек (H1 и J1) появились в ячейке (A1) с подчеркиванием,а другие значения ячеек (g1, i1, k1) без подчеркивания все вместе в ячейке (A1)

Richard MacCutchan

Это всего лишь одна из многих вещей, которые мне еще нужно как следует выучить. :)

Рейтинг:
12

Rama2018

спасибо но это не работает


Maciej Los

Это не ответ. Пожалуйста, удалите его, чтобы избежать голосования вниз. Чтобы оставить комментарий, используйте виджет "есть вопрос или комментарий".

Richard MacCutchan

Это потому, что вы делаете что-то неправильно.

Maciej Los

Уважайте правила! Удали это!