Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何连接单元格值,直到在Excel中找到空白,然后在段落的第一行返回结果?_Excel_Vba_String_Concatenation - Fatal编程技术网

如何连接单元格值,直到在Excel中找到空白,然后在段落的第一行返回结果?

如何连接单元格值,直到在Excel中找到空白,然后在段落的第一行返回结果?,excel,vba,string,concatenation,Excel,Vba,String,Concatenation,我有一个列,在不同的行中拆分了断开的段落,需要将段落连接到段落第一行的单个段落中 我想要这个: Column1 | Column2 The weather is | The weather is good today, how are you? good today, how | are you? | | I'm fine, | I'm fine, thank you. thank you.

我有一个列,在不同的行中拆分了断开的段落,需要将段落连接到段落第一行的单个段落中

我想要这个:

Column1           | Column2
The weather is    | The weather is good today, how are you?
good today, how   |
are you?          |
                  |
I'm fine,         | I'm fine, thank you.
thank you.        |
                  |
                  |
                  |
There were        | There were 3 empty rows in Column 1 just before this paragraph. And should have 4 rows using after the macro.
3 empty rows in   |
Column1 just      |
before this       |
paragraph. And    |
should have 4     |
rows after        |
using the macro.  |
                  |
                  |
More text.        | More text.
我尝试过多个宏,例如

但是他们返回的结果没有与原始行对齐。(以下是第一个宏,它们删除了每个段落后的一个空行,而完全忽略了连续的空行)


是否有方法将字符串连接到空白单元格,然后返回断开段落第一行单元格上的输出?

要输出与段落对齐的内容,请跟踪段落的起始位置

像这样的

子演示()
将ws设置为工作表
变暗rng As范围
Dim dat作为变量
作为变量的模糊结果
变暗rw为长
变暗和变暗一样长
Dim InPara为布尔型
像弦一样的暗句
设置ws=ActiveSheet
与ws
设置rng=.Range(.Cells(.Rows.Count,1),.Cells(2,1))
如果rng.Row=1,则退出Sub
dat=rng.Value2
以
重拨结果(1到UBound(dat,1),1到1)
InPara=假
对于rw=1至UBound(dat,1)
如果不是InPara和Trim$(dat(rw,1))vbNullString,则
InPara=真
rwOut=rw
ElseIf InPara和Trim(dat(rw,1))=vbNullString Then
InPara=假
结果(rwOut,1)=语句
Sentance=vbNullString
如果结束
如果在帕拉那么
Sentance=Sentance&“和修剪(dat(rw,1))
如果结束
下一个
平均偏移量(,1)=结果
端接头
分段
  • 调整常量部分中的值
选项显式
分段
'定义常量。
Const sName As String=“Sheet1”
Const sFirst As String=“A2”
Const dName As String=“Sheet1”
Const dFirst As String=“B2”
Const dDelim As String=“”
'创建对工作簿的引用。
将wb设置为工作簿:设置wb=ThisWorkbook包含此代码的工作簿
'创建对目标列范围的第一个单元格的引用。
Dim dCell As Range:设置dCell=wb.工作表(dName).Range(dFirst)
'创建对源列范围的引用。
变暗srg As范围
Dim作为布尔值不是空的
带wb.工作表(sName).范围(sFirst)
'尝试查找最后一个非空单元格。
暗淡的lCell As范围
设置lCell=.Resize(.Worksheet.Rows.Count-.Row+1)_
.Find(“*”,xlFormulas,,xlPrevious)
'验证最后一个非空单元格。
如果不是lCell,那就什么都不是了
设置srg=.Resize(lCell.Row-.Row+1)
isNotEmpty=True
如果结束
以
'将结果写入目标列范围。
暗计数等于长
如果不是空的话
'将源列范围中的值写入源数组。
rCount=srg.Rows.Count
作为变体的Dim-sData
如果rCount=1,则
ReDim sData(1对1,1对1):sData(1,1)=srg.值
其他的
sData=srg.值
如果结束
'创建目标阵列。
Dim dData()作为字符串:ReDim dData(1到rCount,1到1)
'声明其他变量。
Dim S字符串作为字符串,dString作为字符串
变暗sr一样长,dr一样长
Dim不写为布尔值
'通过源数组的每个元素(行)循环。。。
' ... 并将结果写入目标数组。
对于sr=1到rCount
sString=CStr(sData(sr,1))'Trim(…)或Application.Trim(…)
如果Len(sString)>0,则
如果没有写的话
dString=dString&dDelim&sString
其他的
dString=sString
dr=sr
isnotwrited=True
如果结束
其他的
如果没有写的话
dData(dr,1)=dString
isnotwrited=False
如果结束
如果结束
下一个sr
'写入最后一个目标字符串(到目标数组)。
dData(dr,1)=dString
'从目标数组写入值
'返回到目标列范围。
dCell.Resize(rCount).Value=dData
如果结束
'清除目标列范围下的内容
“(“是否有数据”)。
与dCell
.Resize(.Worksheet.Rows.Count-.Row-rCount+1)_
.偏移量(rCount).清除内容
以
端接头
编辑:
  • 以下是
    ActiveSheet
    (仅一张工作表)的修改版本,包括一个自动
    Trim
    (不是
    Application.Trim
    ),它将删除前导空格和尾随空格,但可能会保留完整的连续空格
子段落活动表()
'定义常量。
Const sFirst As String=“A2”
Const dFirst As String=“B2”
Const dDelim As String=“”
'创建对目标列范围的第一个单元格的引用。
将dCell设置为范围:设置dCell=ActiveSheet.Range(dFirst)
'创建对源列范围的引用。
变暗srg As范围
Dim作为布尔值不是空的
使用ActiveSheet.Range(sFirst)
'尝试查找最后一个非空单元格。
暗淡的lCell As范围
设置lCell=.Resize(.Worksheet.Rows.Count-.Row+1)_
.Find(“*”,xlFormulas,,xlPrevious)
'验证最后一个非空单元格。
如果不是lCell,那就什么都不是了
设置srg=.Resize(lCell.Row-.Row+1)
isNotEmpty=True
如果结束
EN
Column1           | Column2
The weather is    | The weather is good today, how are you?
good today, how   | I'm fine, thank you.
are you?          |
                  |
I'm fine,         | There were 3 empty rows in Column 1 just before this paragraph. And should have 4 rows using after the macro.
thank you.        |
                  | More text.
                  |
                  |
There were        |
3 empty rows in   |
Column1 just      |
before this       |
paragraph. And    |
should have 4     |
rows after        |
using the macro.  |
                  |
                  |
More text.        |