Excel精英培训网

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

[已解决][求助]根据个数显示全部名称

[复制链接]
发表于 2008-1-19 16:28 | 显示全部楼层 |阅读模式

A 列                        B列

张一500
张二600
张三700
张四500
张五300
张六700
我要达到以下效果
 >5003个 分别是:张二、张三、张六

最佳答案
2008-1-19 23:03
QUOTE:
以下是引用紫映竹在2008-1-19 22:18:00的发言:

先谢谢大家,最后一个是用自定义做的?我今天晚上才看了一点?

那如果说还要对应后面的金额,如张二600、张三700、张六700(这是在一个单元格中),再如果是分别放在三列中,又要如何操作?

在一列中加上金额

Sub 计数()
    Dim intI As Integer, intJ As Integer, rowI As Integer
    Dim dobI As Double
    Dim strI As String
    dobI = 500
    intJ = 1
    rowI = Range("A65536").End(xlUp).Row
    For intI = 1 To rowI
        If Cells(intI, 2) > dobI Then
            If strI = "" Then
                strI = Cells(intI, 1) & Cells(intI, 2)
            Else
                strI = strI & "、" & Cells(intI, 1) & Cells(intI, 2)
            End If
            intJ = intJ + 1
        End If
    Next
    Cells(1, 4) = intJ - 1 & "个 分别是:" & strI
End Sub

放在三列中

Sub 计数()
    Dim intI As Integer, intJ As Integer, rowI As Integer
    Dim dobI As Double
    Dim strI As String
    dobI = 500
    intJ = 1
    rowI = Range("A65536").End(xlUp).Row
    For intI = 1 To rowI
        If Cells(intI, 2) > dobI Then
            Cells(1, intJ+3) = Cells(intI, 1) & Cells(intI, 2)
            intJ = intJ + 1
        End If

    Next
End Sub

出给题给你,你自己试着改一下代码

把结果放在最后一行,并且每个名字存放一列

[此贴子已经被作者于2008-1-19 23:06:12编辑过]
发表于 2008-1-19 18:25 | 显示全部楼层

Sub 计数()
    Dim intI As Integer, intJ As Integer, rowI As Integer
    Dim dobI As Double
    Dim strI As String
    dobI = 500
    intJ = 1
    rowI = Range("A65536").End(xlUp).Row
    For intI = 1 To Range("A65536").End(xlUp).Row
        If Cells(intI, 2) > dobI Then
            If strI = "" Then
                strI = Cells(intI, 1)
            Else
                strI = strI & "、" & Cells(intI, 1)
            End If
            intJ = intJ + 1
        End If
    Next
    Cells(1, 4) = intJ - 1 & "个 分别是:" & strI
End Sub

CuZh0YRa.rar (6.73 KB, 下载次数: 3)

回复

使用道具 举报

发表于 2008-1-19 18:28 | 显示全部楼层

学习了,入门班的应该能做到了,

不过没有戏兄的规范。

回复

使用道具 举报

发表于 2008-1-19 18:29 | 显示全部楼层

如果要设自定义函数">500"怎么应用?,如果"<500"呢?

 If Cells(intI, 2) > dobI Then这句有没有办法作成通用的,类似countif

回复

使用道具 举报

发表于 2008-1-19 19:21 | 显示全部楼层

QUOTE:
以下是引用zjxia889在2008-1-19 18:29:00的发言:

如果要设自定义函数">500"怎么应用?,如果"<500"呢?

 If Cells(intI, 2) > dobI Then这句有没有办法作成通用的,类似countif

已经解决了你的问题了[em04]
回复

使用道具 举报

发表于 2008-1-19 19:35 | 显示全部楼层

又学了一招,哈哈

QUOTE:
以下是引用戏子在2008-1-19 19:21:00的发言:
QUOTE:
以下是引用zjxia889在2008-1-19 18:29:00的发言:

如果要设自定义函数">500"怎么应用?,如果"<500"呢?

 If Cells(intI, 2) > dobI Then这句有没有办法作成通用的,类似countif

已经解决了你的问题了[em04]

Function tjtj(rng As Range, tj As String) As String
Dim arr, k As Long, c As Integer, rrr As String
arr = rng.Value
For k = 1 To UBound(arr)
 If Evaluate(arr(k, 2) & tj) Then
   c = c + 1
   rrr = rrr & arr(k, 1) & "、"
 End If
Next k
rrr = Left(rrr, Len(rrr) - 1)
tjtj = c & "个 分别是:" & rrr
End Function
回复

使用道具 举报

 楼主| 发表于 2008-1-19 22:18 | 显示全部楼层

先谢谢大家,最后一个是用自定义做的?我今天晚上才看了一点?

那如果说还要对应后面的金额,如张二600、张三700、张六700(这是在一个单元格中),再如果是分别放在三列中,又要如何操作?

回复

使用道具 举报

 楼主| 发表于 2008-1-19 22:22 | 显示全部楼层

这个自[定义函数看得我好眼花
回复

使用道具 举报

发表于 2008-1-19 23:03 | 显示全部楼层    本楼为最佳答案   

QUOTE:
以下是引用紫映竹在2008-1-19 22:18:00的发言:

先谢谢大家,最后一个是用自定义做的?我今天晚上才看了一点?

那如果说还要对应后面的金额,如张二600、张三700、张六700(这是在一个单元格中),再如果是分别放在三列中,又要如何操作?

在一列中加上金额

Sub 计数()
    Dim intI As Integer, intJ As Integer, rowI As Integer
    Dim dobI As Double
    Dim strI As String
    dobI = 500
    intJ = 1
    rowI = Range("A65536").End(xlUp).Row
    For intI = 1 To rowI
        If Cells(intI, 2) > dobI Then
            If strI = "" Then
                strI = Cells(intI, 1) & Cells(intI, 2)
            Else
                strI = strI & "、" & Cells(intI, 1) & Cells(intI, 2)
            End If
            intJ = intJ + 1
        End If
    Next
    Cells(1, 4) = intJ - 1 & "个 分别是:" & strI
End Sub

放在三列中

Sub 计数()
    Dim intI As Integer, intJ As Integer, rowI As Integer
    Dim dobI As Double
    Dim strI As String
    dobI = 500
    intJ = 1
    rowI = Range("A65536").End(xlUp).Row
    For intI = 1 To rowI
        If Cells(intI, 2) > dobI Then
            Cells(1, intJ+3) = Cells(intI, 1) & Cells(intI, 2)
            intJ = intJ + 1
        End If

    Next
End Sub

出给题给你,你自己试着改一下代码

把结果放在最后一行,并且每个名字存放一列

[此贴子已经被作者于2008-1-19 23:06:12编辑过]
回复

使用道具 举报

 楼主| 发表于 2008-1-20 20:49 | 显示全部楼层

回戏子的话,我这不是VBA没有学好嘛。。。。我连三脚猫的功夫都没有。。。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-23 16:40 , Processed in 0.306206 second(s), 7 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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