Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.07.2011, 13:58   #1
ZerGO
 
Регистрация: 12.10.2010
Сообщений: 5
Восклицание Копирование части текста(выделенного полужирным) из ячейки

Всем доброго дня!

Помогите пожалуйста решить вот такую задачу:
На листе1 в ячейке А1 есть строка " Процессор AMD Athlon ™ II X2 240 (tray ADX240OCK23GQ / ADX240OCK23GM) AM3, 2.80GHz, HT 4000MHz, L2: 2x1024KB, 2 ядра, 45nm, 65W, tray "
Как ее разделить на две части и записать на лист2 следующим образом:
В ячейку В1 полужирный тест: " Процессор AMD Athlon ™ II X2 240 (tray ADX240OCK23GQ / ADX240OCK23GM) "
В ячейку С1 простой текст: " AM3, 2.80GHz, HT 4000MHz, L2: 2x1024KB, 2 ядра, 45nm, 65W, tray "

Гугл особых результатов не дал, потому буду благодарен любой информации что поможет решить задачу!
ZerGO вне форума Ответить с цитированием
Старый 25.07.2011, 14:13   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Было:
Код:
==============================================================
webley
разбивка ячейки A1 на две по признаку "нежирной" буквы:
Sub test()
For i = 1 To Len(Cells(1, 1))
If Cells(1, 1).Characters(Start:=i, Length:=1).Font.Bold = False Then
Cells(1, 2) = Left(Cells(1, 1), i - 1)
Cells(1, 3) = Right(Cells(1, 1), Len(Cells(1, 1)) - i + 1)
Exit For
End If
Next i
End Sub

==============================================================
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 25.07.2011, 14:40   #3
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

ИЛИ UDF
Код:
Function жирность(TXT As Range)
Dim i&
For i = 1 To Len(TXT.Value)
    With TXT.Characters(i, 1)
               If .Font.Bold Then жирность = жирность & .Text
    End With
 Next
End Function
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234

Последний раз редактировалось R Dmitry; 25.07.2011 в 16:05.
R Dmitry вне форума Ответить с цитированием
Старый 25.07.2011, 15:26   #4
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

UDF, возвращает 2 значения, вводить в две соседние ячейки как формулу массива, Ctrl+Shift+Enter
Код:
Function ZerGO(r As Range)
Dim i&
With r(1)
    For i = 1 To Len(.Value)
        If Not .Characters(i, 1).Font.Bold Then Exit For
    Next
    ZerGO = Array(Left(.Value, i - 1), Mid(.Value, i))
End With
End Function
Вложения
Тип файла: zip 850482.zip (8.7 Кб, 21 просмотров)
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 26.07.2011, 11:04   #5
ZerGO
 
Регистрация: 12.10.2010
Сообщений: 5
Хорошо

Всем огромнейшие спасибо! Все способы работают.
Отдельное СПАСИБО Казанский, идеальный вариант решения задачи!
ZerGO вне форума Ответить с цитированием
Старый 27.07.2011, 20:15   #6
ZerGO
 
Регистрация: 12.10.2010
Сообщений: 5
Вопрос

Ребята помогите пожалуйста! Не все так гладко!

Уважаемый Казанский, Ваш вариант почему то не всегда выдает значение. Может можно исправить?

Уважаемый R Dmitry, Ваш код хорошо справляется но увы только с полужирным. Может можно функцию для простого текста написать? Тогда будет две функции для полужирного и простого.

В файле два метода и проблемные ячейки.

Помогите пожалуйста!!!!!!
Вложения
Тип файла: rar 1.rar (9.1 Кб, 17 просмотров)
ZerGO вне форума Ответить с цитированием
Старый 27.07.2011, 22:36   #7
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Непонятно, почему не работает формула массива... Вероятно, что-то с длиной строки связано.
Но пока можно такими двумя вариантами выкрутиться (Алексей, извини ):
Код:
Function ZerGO_B(r As Range)
Dim i&
With r(1)
    For i = 1 To Len(.Value)
        If Not .Characters(i, 1).Font.Bold Then Exit For
    Next
    ZerGO_B = Left(.Value, i - 1)
End With
End Function

Function ZerGO_S(r As Range)
Dim i&
With r(1)
    For i = 1 To Len(.Value)
        If Not .Characters(i, 1).Font.Bold Then Exit For
    Next
    ZerGO_S = Mid(.Value, i)
End With
End Function
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 27.07.2011, 23:45   #8
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

для 2003 не проверял

Код:
Function жирность(TXT As Range)
Dim i&
For i = 1 To Len(TXT.Value)
    With TXT.Characters(i, 1)
               If Not .Font.FontStyle = "обычный" Then жирность = жирность & .Text
    End With
 Next
End Function
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
R Dmitry вне форума Ответить с цитированием
Старый 28.07.2011, 10:29   #9
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Да, проблема в длине строки (>255). Сделал с помощью промежуточного текстового массива - работает в 2007, прошу попробовать в 2003.
Код:
Function ZerGO(r As Range)
Dim i&, x$(0 To 1)
With r(1)
    For i = 1 To Len(.Value)
        If Not .Characters(i, 1).Font.Bold Then Exit For
    Next
    x(0) = Left$(.Value, i - 1)
    x(1) = Mid$(.Value, i)
    ZerGO = x
End With
End Function
Вложения
Тип файла: rar 1.rar (10.4 Кб, 25 просмотров)
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 28.07.2011, 10:34   #10
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

В 2003 работает.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копирование части данных ячейки Doszhan Microsoft Office Excel 15 04.11.2011 07:49
Копирование выделенного текста peplenko Общие вопросы по Java, Java SE, Kotlin 2 18.07.2011 04:15
Удаление из ячейки StringGrid части текста SPD Общие вопросы Delphi 3 21.08.2010 12:24
Копирование выделенного текста из чужого окна Gerzs Общие вопросы Delphi 0 02.07.2010 18:47
Копирование текста ячейки 2 цветов WIC Microsoft Office Excel 3 24.09.2007 13:32