楼主: 可~乐
1864 7

[程序分享] excel查找匹配 [推广有奖]

讲师

70%

还不是VIP/贵宾

-

威望
0
论坛币
5054 个
通用积分
2.3322
学术水平
107 点
热心指数
96 点
信用等级
90 点
经验
9453 点
帖子
300
精华
1
在线时间
735 小时
注册时间
2010-3-25
最后登录
2020-8-3

10论坛币
求助一下,这个怎么利用excel函数求出下面想要生成的变量,谢谢!
QQ图片20130916221315.jpg

最佳答案

TimeT 查看完整内容

试试如下的程序: Sub FindTxt() Dim i As Long, j As Long, NumberOfRows As Long, bFound As Boolean, VarText As String NumberOfRows = 10 '10 is for testing, please specify your own 'if NumberOfRows are too large, the following program is not efficient For i = 1 To NumberOfRows VarText = Cells(i + 1, 1).Value bFound = False For j = 1 To NumberOfRows If InStr(1, Cells(j + 1, 4).V ...
关键词:EXCEL exce xcel cel excel函数 excel函数

回帖推荐

可~乐 发表于7楼  查看完整内容

非常感谢!我稍微改动了一下 ,把Cells(i + 1, 5)改成 Cells(j + 1, 5).就是我想要的了。。。

TimeT 发表于6楼  查看完整内容

试试如下的程序: Sub FindTxt() Dim i As Long, j As Long, NumberOfRows As Long, bFound As Boolean, VarText As String NumberOfRows = 10 '10 is for testing, please specify your own 'if NumberOfRows are too large, the following program is not efficient For i = 1 To NumberOfRows VarText = Cells(i + 1, 1).Value bFound = False For j = 1 To NumberOfRows If InStr(1, Cells(j + 1, 4).V ...

本帖被以下文库推荐

沙发
TimeT 发表于 2013-9-16 22:15:20 |只看作者 |坛友微信交流群
试试如下的程序:

Sub FindTxt()
Dim i As Long, j As Long, NumberOfRows As Long, bFound As Boolean, VarText As String
NumberOfRows = 10 '10 is for testing, please specify your own
    'if NumberOfRows are too large, the following program is not efficient
For i = 1 To NumberOfRows
VarText = Cells(i + 1, 1).Value
bFound = False
    For j = 1 To NumberOfRows
    If InStr(1, Cells(j + 1, 4).Value, VarText) > 0 Then 'i.e. if Var is in the Source
        bFound = True
        Exit For
    End If
    Next j
If bFound Then 'if found, print Target to column B
    Cells(i + 1, 2).Value = Cells(i + 1, 5).Value
Else 'if not found, print VarText to column B
    Cells(i + 1, 2).Value = VarText
End If
Next i
End Sub
已有 2 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
客初 + 20 + 20 热心帮助其他会员
可~乐 + 1 + 1 + 1 热心帮助其他会员

总评分: 经验 + 20  论坛币 + 20  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

藤椅
TimeT 发表于 2013-9-16 23:01:19 |只看作者 |坛友微信交流群
你这题应该不难,只是你的规则和演示有矛盾。就第一行来说,“好人”未在“我是good man“中出现,按你的规则,生成的变量=“好人”,但是你演示的是“good”(而且为何是“good”而不是“good11”呢?)。完全看不懂究竟要做什么。

使用道具

板凳
可~乐 发表于 2013-9-16 23:32:59 |只看作者 |坛友微信交流群
TimeT 发表于 2013-9-16 23:01
你这题应该不难,只是你的规则和演示有矛盾。就第一行来说,“好人”未在“我是good man“中出现,按你的规 ...
额,是我解释漏了几个字,sorry。。。

规则
"变量var如果在变量source所有值中匹配到,那么返回对应的那一行的target变量的值,如果不存在,则返回变量var的值。
例如“好人”(A2),在所有source(D2:D5)中匹配到D4,那么返回这一行target的值,即‘good’(E4)"
"例如“坏人”(A3),在所有source(D2:D5)中匹配到D5,那么返回这一行target的值,即‘bad’(E5)"
"例如“大神”(A4),在所有source(D2:D5)中都匹配不到,那么返回var的值,即自身‘大神’(A4)"

使用道具

报纸
danishman 发表于 2013-9-18 11:21:36 |只看作者 |坛友微信交流群
可~乐 发表于 2013-9-16 23:32
额,是我解释漏了几个字,sorry。。。

规则
你这个会出现重复情况吗?比如“好人”,又出现“老好人”?

使用道具

地板
可~乐 发表于 2013-9-18 11:26:51 |只看作者 |坛友微信交流群
danishman 发表于 2013-9-18 11:21
你这个会出现重复情况吗?比如“好人”,又出现“老好人”?
这个不会,要么只有一个,要么没有。。。。

使用道具

7
可~乐 发表于 2013-9-19 00:48:51 |只看作者 |坛友微信交流群
TimeT 发表于 2013-9-18 21:34
试试如下的程序:

Sub FindTxt()
非常感谢!我稍微改动了一下 ,把Cells(i + 1, 5)改成 Cells(j + 1, 5).就是我想要的了。。。

使用道具

8
zdmq1234 发表于 2015-5-26 13:11:34 |只看作者 |坛友微信交流群
非常感谢,有用

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-12-27 04:52