Excel精英培训网

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

[已解决]請問老師如何判斷文字

[复制链接]
发表于 2011-10-28 12:44 | 显示全部楼层 |阅读模式
如何利用sumproduct函數判斷sheet1中的名稱內第2個文字是1或2呢?
以便做出sheet2的總計

Sub t1()
Dim i,t As Integer
t = Sheets(1).Range("a65536").End(xlUp).Row - 1
for i = 2 to 4   
    Sheets(2).Cells(i, 2) = Evaluate("=SUMPRODUCT(('sheet1'!a2:a" & t & "='sheet2'!A" & i & ")_
      *('sheet1'!b2:b" & t & " like '*1*'))")
End Sub
最佳答案
2011-10-29 15:10
Sub t1()
    Dim s As String
    Dim arr
'    arr = [SUMPRODUCT((A2:A11=E1)*(MID(B2:B11,2,1)="1"))]   ' 可以这样

    s = "=SUMPRODUCT((A2:A11=E1)*(MID(B2:B11,2,1)=""1""))"   ' 正确
'    s = "SUMPRODUCT((A2:A11=F1)*(MID(B2:B11,2,1)=""1"")"    ' 少一边括号
    arr = Evaluate(s)
    Cells(2, 5) = arr
End Sub

Book1.rar

6.28 KB, 下载次数: 5

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2011-10-28 12:55 | 显示全部楼层
不建议这样使用

最好说明下,哪些数据源(改变前),哪些结果(改变后)

选取少量数据,确保能说清题意,就好列举结果了。
回复

使用道具 举报

 楼主| 发表于 2011-10-28 14:26 | 显示全部楼层
老師好
數據源是

單位        名稱
a        a123
a        s124
a        f222
b        a223
b        a125
b        v234
c        a144
c        a244
c        a111
c        g111
其中名稱的第2個文字是指產品的等級
希望能產生以下表

公司        甲級        乙級
a        2        1
b        1        2
c        3        2
指a b c公司甲級及乙級產品各有多少
謝謝老師
回复

使用道具 举报

发表于 2011-10-28 19:11 | 显示全部楼层
“名稱的第2個文字”是什么意思?
3楼只有单位和名称,等级在哪里呀?
能否上传excel文件
回复

使用道具 举报

 楼主| 发表于 2011-10-28 20:34 | 显示全部楼层
老師
我的意思是名稱的第2個文字,指如a123的1,或b222的2,或s124的1,
1代表甲級,2代表乙級
a表的單位打錯了,應該是公司
我想算出各公司的甲級跟乙級的數量
excel檔已在1樓傳出
謝謝老師
回复

使用道具 举报

发表于 2011-10-28 22:46 | 显示全部楼层
回复 e2solo 的帖子

为了用公式中途加了个辅助列,有点复杂了
另外没排除都是a单位的情况下,产品名有重复的情况

Book1.rar

14.79 KB, 下载次数: 2

回复

使用道具 举报

 楼主| 发表于 2011-10-29 00:20 | 显示全部楼层
老師
不好意思
我的意思只是想知道如何在公式中提出名稱中的第2個字是等於1
我如果在儲存格使用
=SUMPRODUCT((A2:A11=F1)*(MID(B2:B11,2,1)="1"))
沒問題, 可是在vba中使用
cells(2,2)= Evaluate("=SUMPRODUCT((A2:A11=F1)*(MID(B2:B11,2,1)="1")")
就會出錯,不知要如何表示 "1"
回复

使用道具 举报

发表于 2011-10-29 10:01 | 显示全部楼层
如果1是文本,Evaluate("=SUMPRODUCT((A2:A11=F1)*(MID(B2:B11,2,1)=""1"")")
如果1是数字,Evaluate("=SUMPRODUCT((A2:A11=F1)*(MID(B2:B11,2,1)=1)")
回复

使用道具 举报

 楼主| 发表于 2011-10-29 10:42 | 显示全部楼层
回复 吕?布 的帖子

老師:
使用公式=SUMPRODUCT((A2:A11=E1)*(MID(B2:B11,2,1)="1"))
以計算出a公司產品編號的第2個文字是1的總數量
可是使用VBA代碼卻無法實現
不知為什麼
煩請老師解答

Book1.rar

12.62 KB, 下载次数: 4

回复

使用道具 举报

发表于 2011-10-29 15:10 | 显示全部楼层    本楼为最佳答案   
Sub t1()
    Dim s As String
    Dim arr
'    arr = [SUMPRODUCT((A2:A11=E1)*(MID(B2:B11,2,1)="1"))]   ' 可以这样

    s = "=SUMPRODUCT((A2:A11=E1)*(MID(B2:B11,2,1)=""1""))"   ' 正确
'    s = "SUMPRODUCT((A2:A11=F1)*(MID(B2:B11,2,1)=""1"")"    ' 少一边括号
    arr = Evaluate(s)
    Cells(2, 5) = arr
End Sub
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-7-8 01:53 , Processed in 0.145282 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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