ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 名课 - Power BI数据分析与可视化实战 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
Python自动化办公应用大全 Excel 2021函数公式学习大典 Kutools for Office 套件发布 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: cctvzyp

[求助] 如何将多行数据合并在一行内

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-6-6 15:21 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
5楼的方法简单,学习了

TA的精华主题

TA的得分主题

发表于 2010-6-6 16:18 | 显示全部楼层
连续按下CTRL+C两次(右边会弹出一个窗口),原来有那具粘贴窗口的,不过被告关闭了,不知道应如何再显示出来

TA的精华主题

TA的得分主题

发表于 2010-6-6 17:00 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
原帖由 吾股丰登 于 2010-6-5 09:29 发表
7楼说到填充  就是这样的流程  给你们抓图演示一下


主要操作代码如下:
Columns("A:A").ColumnWidth = 100 '这里的列宽制定,暂定为100
Range("A1:A5").Justify  '这一步就是对选择范围内内容的合并重排
Columns("A:A").EntireColumn.AutoFit


进一步优化代码如下:
Sub Macro1()
    For i = 1 To Selection.Cells.Count
        L = L + Len(Cells(i)) * 2
    Next '遍历选择范围内的单元格,按每个字长需占2单位来估算总体长度。
    Columns("A:A").ColumnWidth = L '按估算长度改变列宽
    On Error Resume Next
    Selection.Justify  '对选择范围内文字内容作重排,注意不可含数字
    If Err.Number <> 0 Then
        MsgBox "number! 范围内有数字!不可操作"
        Err.Clear
    End If    '错误处理
    Selection.EntireColumn.AutoFit '对重排后的列宽作调整
End Sub

TA的精华主题

TA的得分主题

发表于 2010-6-6 17:05 | 显示全部楼层
楼上高手真牛,学习了...
偶学VBA20年,就是到不了这一步哎...

TA的精华主题

TA的得分主题

发表于 2010-6-6 17:10 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
原帖由 jyhxr 于 2010-6-4 20:57 发表
=PHONETIC(A1:A5)


=PHONETIC()这个函数,本来是用来转换汉字到日文片假名的。

PHONETIC
See Also

Extracts the phonetic (furigana) characters from a text string.

Syntax

PHONETIC(reference)

Reference   is a text string or a reference to a single cell or a range of cells that contain a furigana text string.

Remarks

If reference is a range of cells, the furigana text string in the upper-left corner cell of the range is returned.
If the reference is a range of nonadjacent cells, the #N/A error value is returned.

Example

If cells C4 contains "東京都" and cell B7 contains "大阪府", the following are true:

=PHONETIC(C4) equals "トウキョウト"

=PHONETIC(B7) equals "オオサカフ"

_____________________________________________________

PHONETIC

请参阅

提取文本字符串中的拼音 (furigana) 字符。该函数只适用于日文版

语法

PHONETIC(reference)

Reference    为文本字符串或对单个单元格或包含 furigana 文本字符串的单元格区域的引用。

说明

如果 reference 为单元格区域,则返回区域左上角单元格中的 furigana 文本字符串。
如果 reference 为不相邻单元格的区域,将返回错误值 #N/A。

示例

如果单元格 C4 中包含“東京都”,而单元格 B7 中包含“大阪府”,则有:

=PHONETIC(C4) 等于“トウキョウト”

=PHONETIC(B7) 等于“オオサカフ”


该函数的片假名转换功能,只能在日文环境下使用。

在中文环境下的汉字,以及其他西文字符,将因为无法转换成日文片假名而维持原来的样子。
因此,仅仅留下了组合不同单元格文字的作用了。


正好被2楼【jyhxr】歪打正着用上了。

呵呵。

水平不是一般地高。

[ 本帖最后由 香川群子 于 2010-6-6 19:45 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-6-6 17:35 | 显示全部楼层
太棒了,不知道有没有能像刚才这个倒推的方法没有,

就是将一个单元格内容分成几个单元格。收藏起来

TA的精华主题

TA的得分主题

发表于 2010-6-6 17:59 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

回复 4楼 吾股丰登 的帖子

学习了,多谢!

TA的精华主题

TA的得分主题

发表于 2010-6-6 18:25 | 显示全部楼层

介绍一个我自编的,用来把一定范围内单元格内容合并在一起的自定义函数。

Function CS(Rng As Range, Optional InsWord = "", Optional SN = 1, Optional LN = 0) As String
    For i = 1 To Rng.Count
        s = s & IIf(s <> "" And Len(Rng.Cells(i)) >= SN, InsWord, "") & Mid(Rng.Cells(i), SN, IIf(LN = 0, Len(Rng.Cells(i)), LN))
    Next
    CS = s
End Function


函数第一参数Rng当然是指选定的单元格范围;

函数第二参数InsWord是可选参数,指插入符。
如果什么都不选,那么各单元格内容将没有间隔直接连在一起。
如果需要换行,那么输入char(10)作为插入符即可。
【但是,正常显示需要该单元格格式事先已经改为可以“自动换行”。】

或者可以选择插入空格" "、","、";"、等等。

第三参数SN可选,含义为start no开始数值,
可以指定从每个单元格的第几个字符开始抽取内容。

第四参数LN可选,含义为last no结尾数值,
可以指定从每个单元格的第几个字符开始结束抽取内容。


大家可以试一试。

TA的精华主题

TA的得分主题

发表于 2010-6-6 18:45 | 显示全部楼层
原帖由 xiaofangsir 于 2010-6-6 17:35 发表
太棒了,不知道有没有能像刚才这个倒推的方法没有,

就是将一个单元格内容分成几个单元格。收藏起来



当然可以。第一首推做法,当然是直接手工用文本分列来处理。

不过这样做是分为许多列的。

如过要分为行,那么函数是做不到了,只有vba,

推荐代码如下:
Sub W_List()
    myWord = ActiveCell.Offset(0, -1)
    N = Len(myWord)
   
    s = InputBox("Start of the Word:", , 1)
    If s = "" Then Exit Sub
    '对话框输入起始数,之前的内容可被忽略。默认=1,即选择全部对象。
   
    LW = InputBox("Length of the Word:", , 1)
    If LW="" Then LW=1
    '选择分离字长,默认=1   
    LB = InputBox("Length of the Blank:", , 0)
    If LB="" Then LB=0   
    ’选择分离时需要忽略的字长,如一个空格,或一个逗号是LB=1。默认=0,即不做忽略。

    For i = s To N
        L = Mid(myWord, i, LW)
        ActiveCell = L
        If LW Or LB > 0 Then i = i + LW - 1 + LB
        If LW = 1 Then
            ActiveCell.Resize(, 5).NumberFormatLocal = "@"
            w = Asc(L)
            If w < 0 Then w = 16 ^ 4 + w
            ActiveCell.Offset(0, 1) = w
            ActiveCell.Offset(0, 2) = DH(w)
            
            w = AscW(L)
            If w < 0 Then w = 16 ^ 4 + w
            ActiveCell.Offset(0, 3) = w
            If w > 10000 Then CW = CW & L & " & ChrW(" & w & ")"
            ActiveCell.Offset(0, 4) = DH(w)
        End If
        ActiveCell.Offset(1, 0).Select
    Next i
    '选择拆分字长为1时,本宏过程还将给出改文字的双位码等信息。
    'ActiveCell.Resize(, 5).EntireColumn.AutoFit
    'ActiveCell = "CW=" & CW
    On Error Resume Next
    ActiveCell.End(xlUp).Select
End Sub

具体的作用,还是自己体会一下吧。

上面的宏是以定字长来拆分的,如果需要按特定字符来拆分,还需要改进。

TA的精华主题

TA的得分主题

发表于 2010-6-6 21:11 | 显示全部楼层
五谷丰登的做法,补充一点,用office剪贴板。选中A1:A5,复制,打开office剪贴板,然后在A10单元格双击,然后点击office剪贴板里刚刚放进去的内容。OK了。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-12-25 06:10 , Processed in 0.023340 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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