ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 4657|回复: 11

[求助] 自定义函数

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-4-19 11:49 | 显示全部楼层 |阅读模式
Function hb(rg As Range) '把很多单元格用逗号隔开放一个单元格
    Dim ran As Range, arr, z%
    ReDim arr(1 To rg.Count)
    z = 1
    For Each ran In rg
        arr(z) = ran.Value
        z = z + 1
    Next
    m = 1
    If Len(arr(z).Value) > 0 Then m = m + 1
    ReDim Preserve arr(1 To m)
    hb = Join(arr, Chr(10) & Chr(13)) '换行符,如果不要换行则把char整个换成逗号
End Function

想实现自定义函数,把一列单元格合并起来,用回车隔开,但是空白单元格不合并进来,自己改了个函数,但是好像没用,哪位大神可以帮忙看看?

TA的精华主题

TA的得分主题

发表于 2018-4-19 13:32 | 显示全部楼层
其实没什么差别,首先需要把输入这个公式的哪个单元格设置为自动换行

TA的精华主题

TA的得分主题

发表于 2018-4-19 13:33 | 显示全部楼层
  1. Function 合并内容(ByVal rRNG As Range) As String
  2.     Dim vData As Variant, sStr As String
  3.     If rRNG.Count > 1 Then
  4.         vData = Application.WorksheetFunction.Transpose(rRNG.Value)
  5.         sStr = Join(vData, Chr(10))
  6.     Else
  7.         sStr = rRNG.Text
  8.     End If
  9.     合并内容 = sStr
  10. End Function
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-4-19 14:34 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

试了一下,空白单元格还是并进来了哦,需要把空白单元格忽略,只并有数值的单元格,且用回车隔开。

TA的精华主题

TA的得分主题

发表于 2018-4-19 14:35 | 显示全部楼层
正月庚寅 发表于 2018-4-19 14:34
试了一下,空白单元格还是并进来了哦,需要把空白单元格忽略,只并有数值的单元格,且用回车隔开。

首先需要对单元格进行自动换行设置,然后再输入公式

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-4-19 15:01 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
microyip 发表于 2018-4-19 14:35
首先需要对单元格进行自动换行设置,然后再输入公式

设置了,还是不行,并进来中间有很大一块空的。

TA的精华主题

TA的得分主题

发表于 2018-4-20 10:20 | 显示全部楼层
=ConTxt(IF(A1:A7<>"",A1:A7&CHAR(10),""))    三键

contxt.zip (12.2 KB, 下载次数: 19)

TA的精华主题

TA的得分主题

发表于 2018-4-20 10:58 | 显示全部楼层
Public Function hb(rng As Range) As String
Dim TempArr() As Variant
Dim TempRng As Range
Dim JS%
For Each TempRng In rng
    If TempRng.Value <> "" Then
       JS = JS + 1
       ReDim Preserve TempArr(1 To JS)
       TempArr(JS) = TempRng.Value
    End If
Next
hb = Join(TempArr, Chr(10) & Chr(13))
End Function

TA的精华主题

TA的得分主题

发表于 2018-4-20 11:37 | 显示全部楼层
曲线救国,见附件。。。。。。。

HB.7z

16.06 KB, 下载次数: 21

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-4-24 14:34 | 显示全部楼层
paciguard 发表于 2018-4-20 11:37
曲线救国,见附件。。。。。。。

没有达到目的哦,想要的是1234567行,234行是空的,我想把1567合并起来,中间不能有空行,但是1567又需要有回车隔开。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-26 23:44 , Processed in 0.032876 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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