Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1650|回复: 10

[已解决]如何在同一单元格内分离首行与其他内容

[复制链接]
发表于 2021-12-29 21:37 | 显示全部楼层 |阅读模式
3学分
各位大神如何使用宏分离同一单元格内首行内容与其他内容如图所示,将c列的名称、参数,分离出来



最佳答案
2021-12-29 21:37
autumn0321 发表于 2021-12-31 09:48
当中间有空白行的时候还是会报错哦

Sub test()on error resume next

Dim Arr, T$, n%, i&
Arr = Range("c2:d" & [c65536].End(3).Row)
For i = 1 To UBound(Arr)
IF arr(i,1)="" then
   else
    T = Arr(i, 1): n = InStr(T, Chr(10)) - 1
    Arr(i, 1) = Mid(T, 1, n)
    Arr(i, 2) = Mid(T, n + 2, Len(T)-n-1)
  end if
Next
[e2].Resize(UBound(Arr), 2) = Arr
End Sub

用这个,加一个条件就可以了,把空行排除



同一单元格分离首行.zip

16.48 KB, 下载次数: 11

最佳答案

查看完整内容

Sub test()on error resume next Dim Arr, T$, n%, i& Arr = Range("c2:d" & [c65536].End(3).Row) For i = 1 To UBound(Arr) IF arr(i,1)="" then else T = Arr(i, 1): n = InStr(T, Chr(10)) - 1 Arr(i, 1) = Mid(T, 1, n) Arr(i, 2) = Mid(T, n + 2, Len(T)-n-1) end if Next [e2].Resize(UBound(Arr), 2) = Arr End Sub 用这个,加一个条件就可以了,把空行排除
发表于 2021-12-29 21:37 | 显示全部楼层    本楼为最佳答案   
autumn0321 发表于 2021-12-31 09:48
当中间有空白行的时候还是会报错哦

Sub test()on error resume next

Dim Arr, T$, n%, i&
Arr = Range("c2:d" & [c65536].End(3).Row)
For i = 1 To UBound(Arr)
IF arr(i,1)="" then
   else
    T = Arr(i, 1): n = InStr(T, Chr(10)) - 1
    Arr(i, 1) = Mid(T, 1, n)
    Arr(i, 2) = Mid(T, n + 2, Len(T)-n-1)
  end if
Next
[e2].Resize(UBound(Arr), 2) = Arr
End Sub

用这个,加一个条件就可以了,把空行排除



回复

使用道具 举报

发表于 2021-12-30 00:16 | 显示全部楼层
看看是不是这样

分离首行.rar

22.64 KB, 下载次数: 8

回复

使用道具 举报

 楼主| 发表于 2021-12-30 11:14 | 显示全部楼层

当中间出现空行,非连续的内容会报错哦
回复

使用道具 举报

 楼主| 发表于 2021-12-30 11:16 | 显示全部楼层

请教下 哪些是变量?我复制代码到其他表格上运行不下去
回复

使用道具 举报

发表于 2021-12-30 11:28 | 显示全部楼层
本帖最后由 sam-wang 于 2021-12-30 12:01 编辑
autumn0321 发表于 2021-12-30 11:14
当中间出现空行,非连续的内容会报错哦

請測試看看,謝謝
Sub test()
Dim Arr, T$, n%, i&
Arr = Range("c2:d" & [c65536].End(3).Row)
For i = 1 To UBound(Arr)
    T = Arr(i, 1): n = InStr(T, Chr(10)) - 1
    Arr(i, 1) = Mid(T, 1, n)
    Arr(i, 2) = Mid(T, n + 2, Len(T))
Next
[e2].Resize(UBound(Arr), 2) = Arr
End Sub



回复

使用道具 举报

发表于 2021-12-30 11:42 | 显示全部楼层
sam-wang 发表于 2021-12-30 11:28
請測試看看,謝謝
Sub test()
Dim Arr, T$, n%, i&

Sub test()
Dim Arr, T$, n%, i&
Arr = Range("c2:d" & [c65536].End(3).Row)
For i = 1 To UBound(Arr)
    T = Arr(i, 1): n = InStr(T, Chr(10)) - 1
    Arr(i, 1) = Mid(T, 1, n)
    Arr(i, 2) = Mid(T, n + 2, Len(T)-n-1)
Next
[e2].Resize(UBound(Arr), 2) = Arr
End Sub

改成n+2更加合适

回复

使用道具 举报

发表于 2021-12-30 11:58 | 显示全部楼层
林木水 发表于 2021-12-30 11:42
Sub test()
Dim Arr, T$, n%, i&
Arr = Range("c2:d" & [c65536].End(3).Row)

感謝提醒,謝謝。
回复

使用道具 举报

发表于 2021-12-30 16:59 | 显示全部楼层
E2=LEFT(C2,FIND(CHAR(10),C2)-1)
F2=SUBSTITUTE(C2,E2,)
回复

使用道具 举报

 楼主| 发表于 2021-12-31 09:48 | 显示全部楼层
林木水 发表于 2021-12-30 11:42
Sub test()
Dim Arr, T$, n%, i&
Arr = Range("c2:d" & [c65536].End(3).Row)

111111.png
当中间有空白行的时候还是会报错哦
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-28 14:14 , Processed in 0.200494 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表