求教Excel 大神, 如何split cells by bold text

l
laura3231
楼主 (北美华人网)

请教下Excel大神, 如何用Marcos/ VBA 把一个单元格里的粗体和非粗体分出来呢? 像图片所示。 不胜感激~~~~~~
小喵呜
你的名字都是first and last name两个么?有笨办法就是把第二个空格用REPLACE换成逗号,然后用text to columns把一格从逗号处分成两格。 不过你要是有三个名字或者一个名字第一步就不管用了。
l
laura3231
回复 2楼小喵呜的帖子
这个方法我想到了, 不适用, 具体的数据比这个复杂。 估计需要VBA。 谢谢你~
小乖乖妈妈
回复 3楼laura3231的帖子
我尽量把,你先去把develper的quick access从option搞出来,然后点record macro,把你要的骚操作都点击一遍,然后stop record,看看能不能成功。万一不行你就要打开你record的macro,看看哪里出错。 各人case不同,我总不能把我的code放这里吧。
小乖乖妈妈
再废话一句,谁给你的原始data,谁这么输入数据的,我真是醉了。
j
jacey
小喵呜
回复 3楼laura3231的帖子
我尽量把,你先去把develper的quick access从option搞出来,然后点record macro,把你要的骚操作都点击一遍,然后stop record,看看能不能成功。万一不行你就要打开你record的macro,看看哪里出错。 各人case不同,我总不能把我的code放这里吧。
小乖乖妈妈 发表于 2021-01-22 14:53

record不行吧,比如你选了粗体字,最多record你选了某一格的几个字,粗体是你脑子里想的没办法record啊。
s
smy
can you scan by keyword e.g. take, assume no one has last name take?
h
hhlife
用text to column可以分,我试了一下是可以的。
l
laura3231
回复 6楼jacey的帖子
Flash fill 好像不适于用粗体的选择。 谢谢
我很8
Just do text to column, separate by key word "take"
Nevermind you can''t use a word...sorry
T
Temporarilycalm
这个做不到 识别不了cell内部的不同
p
peace99
=LEFT (text, [num_chars]) =RIGHT (text, [num_chars])
小喵呜
粗体字是可以识别的,用cell.font.bold就能判断逻辑对错,但关键就是第一段不是整个cell,是cell的第一段。
h
huuu
Text to columns 先分出来 concatenate 再并一起.
h
hijklmn
如果每行都是从take开始分开,就找到take的位置,然后用这个位置来分开。。。
=left(a1,search(“take”,a1)-1) =right(a1,Len(a1)-search(“take”,a1)+1)
n
nj_guy
你可以用cell的range 假设是 R 大概是 R.Characters(n).Font.FontStyle 去查每个char 的 Font, 然后决定。 具体记不清了,放狗自己查。
小喵呜
Text to columns 先分出来 concatenate 再并一起.
huuu 发表于 2021-01-22 16:07

其实我觉得这也行,但是楼主说真实的比这个复杂。我能想到的是比如有人名就一个字,那分开的话合起来就不好办了,有的不用合,有的要合两个或者三个。
h
huuu
其实我觉得这也行,但是楼主说真实的比这个复杂。我能想到的是比如有人名就一个字,那分开的话合起来就不好办了,有的不用合,有的要合两个或者三个。
小喵呜 发表于 2021-01-22 16:15

O 我没有仔细看回复
n
nj_guy
我试了一下下面的code,应该会给你Bold Font Char的位置。你可以用同样的逻辑,一个char 一个char地看,是不是 Bold。

Function getBoldFontPos(rng As Range) As Integer Dim ll As Integer ll = len(rng.Cells(1,1).Value)
Dim iret As Integer iret = -1
Dim ii As Integer For ii = 1 To ll If rng.Cells(1,1).Characters(ii,1).Font.FontStyle = "Bold" Then iret = ii End If Next getBoldFontPos = iret End Function
小喵呜
楼主你给的网上例子可以的,我把下面提取电话号码的删了。你先选中第二列,因为那个人查找的话是用offset往后退了一列,就是你有数据的那列。运行后粗体字就写在第二列了。
l
laura3231
回复 20楼nj_guy的帖子
谢谢你! 我来试一下 太感谢!
l
laura3231
回复 21楼小喵呜的帖子
太感谢了!! 我来试一下!! 谢谢
F
ForeverMiracle
华人上的好心人真是多。我是来看答案的.
l
laura3231
感谢热心的大家!!!