佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1854|回复: 15

用vba搜索excel cell里的字

[复制链接]
发表于 11-12-2010 02:47 PM | 显示全部楼层 |阅读模式
我尝试写一个vba程序来辩证excel file里的cell是否有那个字。
若有就以另一个字取代它。以下为我的程序,请大大们指点指点。
感激不尽

Sub Test()

'totalrows = ActiveSheet.UsedRange.Rows.Count


For Row = 2 To 17


If Mid$(Cells(Row, 1).Text, 1, 3) = Cells(2, 2).Text Then


Cells(Row, 1) = Cells(3, 3).Text


End If


Next Row


End Sub

这程序是比较cell (2,2)/(B2 in excel file)的前3个字母,若相同就以cell(3,3)中的字代替。

不过,我希望能够不限字数的对比两个字然后由相同的效果。

回复

使用道具 举报


ADVERTISEMENT

发表于 13-12-2010 06:01 PM | 显示全部楼层
不是很明白你的要求,
怎么不直接使用excel自带的 Find and Replace 呢??
回复

使用道具 举报

 楼主| 发表于 16-12-2010 07:37 PM | 显示全部楼层
回复 2# kiam06

我必须每个星期开一个档案检查一些数据。为了节省时间,希望以macro代替完成,而不是像现在手动分析。
在档案中,有一些属于同类型(a,aa,a1-属于a类型)。我想把它们归类后,以我自定义的代号分类。
这一来可以减轻我检查及分析数据的速度。
希望能得到您的帮助。
回复

使用道具 举报

发表于 16-12-2010 07:54 PM | 显示全部楼层
回复  kiam06

我必须每个星期开一个档案检查一些数据。为了节省时间,希望以macro代替完成,而不是像现 ...
D世纪(DZEN) 发表于 16-12-2010 07:37 PM


macro的确很强大,不过有时使用起来很麻烦。。。
麻烦提供详细些的分类条件。。。
回复

使用道具 举报

发表于 17-12-2010 10:24 PM | 显示全部楼层
本帖最后由 chrizyuen2 于 17-12-2010 10:27 PM 编辑

1)IFilter, 2)odbc to excel,  3)xpath  4)linq to xml 方法多的是。2 算最简单了。
回复

使用道具 举报

发表于 23-12-2010 08:57 PM | 显示全部楼层
回复 3# D世纪(DZEN)


    我也是面對這樣的問題。。。 到現在還是manual找。。。好苦噢噢噢!!!
回复

使用道具 举报

Follow Us
发表于 23-12-2010 08:59 PM | 显示全部楼层
1)IFilter, 2)odbc to excel,  3)xpath  4)linq to xml 方法多的是。2 算最简单了。
chrizyuen2 发表于 17-12-2010 10:24 PM



    2) 怎樣用?我不是programmer base 噢。。。
回复

使用道具 举报

 楼主| 发表于 1-1-2011 12:20 PM | 显示全部楼层
回复 4# kiam06

以下是我的一些数据:
Error CodeDate
12/15/201012/15/201112/15/2012
Engine down(x000_1)759
Camera not on4114
Piston over move(x:2.55; y:1.23)100
Power not turn on221
Piston over move(x:0.55; y:2.20)100
Engine down(x000_3)231
Instability incoming power642
Piston over move(x:1.00; y:1.92)001
Piston over move(x:1.09; y:1.53)010
Piston over move(x:1.00; y:0.53)010
Piston over move(x:0.90; y:1.03)001


我希望把那些不需要的数字除去,变成以下的数据:
Error CodeDate
12/15/201012/15/201112/15/2012
Camera not on4114
Engine down9810
Instability incoming power642
Piston over move222
Power not turn on221

所以希望可以写一个macro来减轻工作量。
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 1-1-2011 12:33 PM | 显示全部楼层
回复 6# chong84

一起加油吧!
长痛不如短痛,写macro虽然痛苦,不过一劳永逸!何乐不为呢?
回复

使用道具 举报

 楼主| 发表于 1-1-2011 01:01 PM | 显示全部楼层
回复 5# chrizyuen2

可以给多一些资料吗?
回复

使用道具 举报

发表于 1-1-2011 02:50 PM | 显示全部楼层
回复 10# D世纪(DZEN)

自己找不着么?
回复

使用道具 举报

发表于 3-1-2011 12:57 PM | 显示全部楼层
回复  kiam06

以下是我的一些数据:


我希望把那些不需要的数字除去,变成以下的数据:

所以希望 ...
D世纪(DZEN) 发表于 1-1-2011 12:20 PM


这个是分割“(”之后的sample,自己研究下。。。
  1. Sub test()
  2. For i = 1 To 11
  3. For x = 1 To Len(Cells(i, 1))
  4. If Mid(Cells(i, 1), x, 1) = "(" Then
  5. Cells(i, 1) = Left(Cells(i, 1), x - 1)
  6. Exit For
  7. End If
  8. Next
  9. Next
  10. End Sub
复制代码
后面的整合方面,自己试试下,
不行的话,再用macro试试下,
再不行的话,才上来问问。。。
回复

使用道具 举报

发表于 11-1-2011 10:43 AM | 显示全部楼层
本帖最后由 chrizyuen2 于 11-1-2011 10:45 AM 编辑
  1. private void button1_Click(object sender, EventArgs e)
  2.         {
  3.             string connectionString = @"Provider=Microsoft.Jet.    OLEDB.4.0;Data Source=Book1.xls;Extended    Properties=""Excel 8.0;HDR=YES;""";

  4.             DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.OleDb");

  5.             using (DbConnection connection = factory.CreateConnection())
  6.             {
  7.                 connection.ConnectionString = connectionString;
  8.                 using (DbCommand command = connection.CreateCommand())
  9.                 {

  10.                     // Cities$ comes from the name of the worksheet

  11.                     command.CommandText = "SELECT ID,City,State FROM [Cities$]";
  12.                     connection.Open();
  13.                     using (DbDataReader dr = command.ExecuteReader())
  14.                     {
  15.                         while (dr.Read())
  16.                         {
  17.                             Debug.WriteLine(dr["ID"].ToString());
  18.                         }
  19.                     }
  20.                 }
  21.             }
  22.         }
复制代码
回复

使用道具 举报

发表于 14-2-2011 02:45 PM | 显示全部楼层
试用 Instr 解决这个问题吧!
回复

使用道具 举报

发表于 27-2-2011 12:41 PM | 显示全部楼层
这样可以吗?
    Range("A2:A500").Replace what:="(*)", replacement:=""
回复

使用道具 举报

 楼主| 发表于 27-2-2011 09:58 PM | 显示全部楼层
回复 15# 发糕


    ok,我尝试看看。。。谢谢
回复

使用道具 举报


ADVERTISEMENT

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

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 14-11-2025 12:42 PM , Processed in 0.169073 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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