想问下万位012?绝地求生新手入门求解答

注:您的评论需要经过审核才能显示哦,请文明发言!
系统工具分类
升级补丁排行
按字母检索:
本站资源均收集整理于互联网,其著作权归原作者所有,如果有侵犯您权利的资源,请来信告知,我们将及时撤销相应资源。
Copy .Com. All Rights Reserved.正则表达式判断一个二位数是否在01-29之间 - ITeye问答
题目要求:
判断一个数是否在01-29之间,我想用正则来写。内容如下:
import java.util.regex.M
import java.util.regex.P
public class Test {
public static void main(String args[]){
public static void p1(){
Pattern p = Pattern.compile("[01-29]");
Matcher m = p.matcher("21");
boolean b = m.matches();
System.out.println(b);//输出false
public static void p2(){
Pattern p = Pattern.compile("[a-z]");
Matcher m = p.matcher("b");
boolean b = m.matches();
System.out.println(b);//输出为true
p2方法输出为 true , 我能理解。
p1方法输出为 false, 我有点糊涂。求教各位大侠。
如果想用正则判断一个数字在01-29之间应该怎么写?
问题补充:我觉的您还是说错了。
&br /&[01-29]表示 0|1-2|9 。不是1、2。
&br /&"^[012](\\d)$" 除了匹配01-29还匹配 00。
&br /&
&br /&
&br /&&div class="quote_title"&lhgyy00 写道&/div&&div class="quote_div"&刚刚上面说错了一点,红色的部分&span style="color: red"&
&br /&
&br /&Pattern p = Pattern.compile("[01-29]")
&br /&[]表示选择,("[01-29]")表示在0、1、2、9这四个字符中选择一个
&br /&可以匹配0、1、2、9这四个中的任意一个 &/span&
&br /&
&br /&
&br /&Pattern p = Pattern.compile("^[012](\\d)$");
&br /&可以匹配01~29中的任意数字
&br /&\d表示数字
&br /&
&br /&
&br /&&pre name="code" class="java"&import java.util.regex.M
import java.util.regex.P
public class Test {
&&& public static void main(String args[]){
&&&
p2();
&&& }
&&& public static void p1(){
&&&
//Pattern p = Pattern.compile("[01-29]");
&&&
Pattern p = Pattern.compile("^[012](\\d)$");
&&&
Matcher m = p.matcher("12");
&&&
boolean b = m.matches();
&&&
System.out.println(b);//输出false
&&& }
&&& public static void p2(){
&&&
Pattern p = Pattern.compile("[a-z]");
&&&
Matcher m = p.matcher("b");
&&&
boolean b = m.matches();
&&&
System.out.println(b);//输出为true
&&& }
}&/pre&&/div&
&br /&
问题补充:那您这个是不是也匹配 00啊?
&br /&&div class="quote_title"&suziwen 写道&/div&&div class="quote_div"&这样写
&br /&
&br /&&pre name="code" class="java"&Pattern p = Pattern.compile("[0-2][0-9]");&
&&&&&&& Matcher m = p.matcher("21");&
&&&&&&& boolean b = m.matches();&
&&&&&&& System.out.println(b);&/pre&&/div&
&br /&
问题补充:哦,我知道了,正则式单个匹配的。可是您这个也匹配 00 啊。
&br /&&div class="quote_title"&hudepin 写道&/div&&div class="quote_div"&你的正则写的不对啊Pattern p = Pattern.compile("[0-2][0-9]");& 应该单个的匹配啊&/div&
&br /&
问题补充:谢谢您,但是我还有一点不是很明白。
&br /&如果我想匹配01-2000怎么写呢?
&br /&我觉的正则对连续的数组匹配支持的不好啊。
&br /&
&br /&&div class="quote_title"&LeeYee 写道&/div&&div class="quote_div"&&div class="quote_title"&引用&/div&&div class="quote_div"&Pattern p = Pattern.compile("[01-29]");& &/div&
&br /&
&br /&这个只能匹配 0或1或2或9 其他均不能匹配。方括号里的代表或者关系,里面的-代表从1到2,所以你这个正则其实是 0|[1-2]|9 .
&br /&
&br /&如果你想匹配的是 01-29 也就是都是两位的那么使用&pre name="code" class="java"&Pattern p = Pattern.compile("[0-2][1-9]|(?:[1-2]0)");&/pre&
&br /&
&br /&如果你想匹配的是1-29& 那么使用&pre name="code" class="java"&Pattern p = Pattern.compile("[1-9]|(?:[1-2][0-9])");&/pre&
&br /&
&br /&如果你想匹配 1-29 也包括01-09 那么使用&pre name="code" class="java"&Pattern p = Pattern.compile("(?:0?[1-9])|(?:[1-2][0-9])")&/pre&
&br /&
&br /&注意以上的正则表达式里 ?:可以去掉 ?:在这里代表不记录捕获组(具体什么是捕获组织自己谷歌下)。&/div&
&br /&
问题补充:&div class="quote_title"&LeeYee 写道&/div&&div class="quote_div"&&div class="quote_title"&引用&/div&&div class="quote_div"&问题补充:
&br /&谢谢您,但是我还有一点不是很明白。
&br /&如果我想匹配01-2000怎么写呢?
&br /&我觉的正则对连续的数组匹配支持的不好啊。
&br /&&/div&
&br /&
&br /&1、首先正则匹配是字符串或者说是单个字符,你可以看下,其实你在测试的时候给的还是数字类型的字符串。因此当然对这种100-20000的数字支持不好了
&br /&2、01-2000如何匹配,我想你那么聪明,看到我的回复在结合相关正则知识应该可以很轻松的写出来吧&img src="/images/smiles/icon_biggrin.gif"/&
&br /&
&br /&提示下,只能1为 2位 3位 的匹配了,没法制定一个数字范围。&/div&
&br /&
&br /&谢谢你,我又有一点明白了。
&br /&现在我不使用?:(这个我现在还不带明白)。写上面的正则匹配。
&br /&0?[1-9]|[1-9]\\d|[1-9]\\d{2}|[1-2]\\d{3}
&br /&
&br /&分别为:
&br /&2位的时候,开头是0;
&br /&2位的时候,开头是[1-9];
&br /&3位;
&br /&4位;
&br /&您看看对不对。
采纳的答案
引用Pattern p = Pattern.compile("[01-29]");&
这个只能匹配 0或1或2或9 其他均不能匹配。方括号里的代表或者关系,里面的-代表从1到2,所以你这个正则其实是 0|[1-2]|9 .
如果你想匹配的是 01-29 也就是都是两位的那么使用Pattern p = Pattern.compile("[0-2][1-9]|(?:[1-2]0)");
如果你想匹配的是1-29& 那么使用Pattern p = Pattern.compile("[1-9]|(?:[1-2][0-9])");
如果你想匹配 1-29 也包括01-09 那么使用Pattern p = Pattern.compile("(?:0?[1-9])|(?:[1-2][0-9])")
注意以上的正则表达式里 ?:可以去掉 ?:在这里代表不记录捕获组(具体什么是捕获组织自己谷歌下)。
import java.util.regex.M
import java.util.regex.P
public class Test {
public static void main(String args[]){
public static void p1(){
Pattern p = Pattern.compile("[0-2][1-9]|[1-2][0]");
Matcher m = p.matcher("21");
boolean b = m.matches();
System.out.println(b);//输出false
public static void p2(){
Pattern p = Pattern.compile("[a-z]");
Matcher m = p.matcher("b");
boolean b = m.matches();
System.out.println(b);//输出为true
引用问题补充:
谢谢您,但是我还有一点不是很明白。
如果我想匹配01-2000怎么写呢?
我觉的正则对连续的数组匹配支持的不好啊。
1、首先正则匹配是字符串或者说是单个字符,你可以看下,其实你在测试的时候给的还是数字类型的字符串。因此当然对这种100-20000的数字支持不好了
2、01-2000如何匹配,我想你那么聪明,看到我的回复在结合相关正则知识应该可以很轻松的写出来吧
提示下,只能1为 2位 3位 的匹配了,没法制定一个数字范围。
Pattern p = Pattern.compile("([12](\\d))|(0[1-9])");
这个可以排除00
刚刚上面说错了一点,红色的部分
Pattern p = Pattern.compile("[01-29]")
[]表示选择,("[01-29]")表示在0、1、2、9这四个字符中选择一个
可以匹配0、1、2、9这四个中的任意一个
Pattern p = Pattern.compile("^[012](\\d)$");
可以匹配01~29中的任意数字
\d表示数字
import java.util.regex.M
import java.util.regex.P
public class Test {
public static void main(String args[]){
public static void p1(){
//Pattern p = Pattern.compile("[01-29]");
Pattern p = Pattern.compile("^[012](\\d)$");
Matcher m = p.matcher("12");
boolean b = m.matches();
System.out.println(b);//输出false
public static void p2(){
Pattern p = Pattern.compile("[a-z]");
Matcher m = p.matcher("b");
boolean b = m.matches();
System.out.println(b);//输出为true
Pattern p = Pattern.compile("[01-29]")
[]表示选择,("[01-29]")表示在0、1、-、2、9这五个字符中选择一个
可以匹配0、1、-、2、9这五个中的任意一个
Pattern p = Pattern.compile("^[012](\\d)$");
可以匹配01~29中的任意数字
\d表示数字
import java.util.regex.M
import java.util.regex.P
public class Test {
public static void main(String args[]){
public static void p1(){
//Pattern p = Pattern.compile("[01-29]");
Pattern p = Pattern.compile("^[012](\\d)$");
Matcher m = p.matcher("12");
boolean b = m.matches();
System.out.println(b);//输出false
public static void p2(){
Pattern p = Pattern.compile("[a-z]");
Matcher m = p.matcher("b");
boolean b = m.matches();
System.out.println(b);//输出为true
Pattern p = Pattern.compile("0[1-9]|1\\d|2\\d");
Matcher m = p.matcher("21");
boolean b = m.matches();
System.out.println(b);// 输出true
Matcher m2 = p.matcher("00");
boolean b2 = m.matches();
System.out.println(b2);// 输出false
Pattern p = Pattern.compile("0[1-9]|1\\d+|2\\d+");
Matcher m = p.matcher("21");
boolean b = m.matches();
System.out.println(b);// 输出true
Matcher m2 = p.matcher("00");
boolean b2 = m.matches();
System.out.println(b2);// 输出false
你的正则写的不对啊Pattern p = Pattern.compile("[0-2][0-9]");& 应该单个的匹配啊
Pattern p = Pattern.compile("[0-2][0-9]");
Matcher m = p.matcher("21");
boolean b = m.matches();
System.out.println(b);
已解决问题
未解决问题用1,2,3,4,5这五个数字可以组成多少个没有重复数字的四位数?如果将这些数位数按照从小到大的顺序排列起来,请问:41
用1,2,3,4,5这五个数字可以组成多少个没有重复数字的四位数?如果将这些数位数按照从小到大的顺序排列起来,请问:4125是第几个?
排列组合吧?120,73
我有更好的回答:
剩余:2000字
与《用1,2,3,4,5这五个数字可以组成多少个没有重复数字的四位数?如果将这些数位数按照从小到大的顺序排列起来,请问:41》相关的作业问题
三的倍数肯定是三个数字的和为三的倍数,几种组合:012,024,123,234 四种组合 .前两种不能以0开头,4*2 八种后者 A33*2 12种,合并就是20种组合.大概是这样解.
P5 5 =120个五位数P2 1 ×P4 4=48 个偶数
分析;首先万位不是1即可!因为百位比较特殊,可以把大于20000的所有数字算出再减去百位是3的可能数字即可!这样比较系统!学过排列组合应该看得懂!C4^1*A4^4-C3^1*A3^3=78
(1)四个数字不重复的有:5×4×3×2=120(个)(2)1做千位的有:4×3×2=24(个),2做千位的有:4×3×2=24(个),3做千位的有:4×3×2=24(个),4做千位的有:4×3×2=24(个),而4做千位的有(从小到大):13 15,24×3+2=74(
你没学排列组合吧,汗,怎么接触的这种题,0不会在万位,所以万位可以是1,2,3,4 若1做万位 0做千位
可见10XXX有6个数 同理12XXX 13XXX 14XXX 也是6个数 而2 3 4做万位 也分别有24个数 总共是96个数.你观察10X
分两种情况:个位是零:4*3*2=24(依次为千位、百位、十位)个位不是零:2*3*3*2=36(依次为个位、千位、百位、十位)所以共有60个.
第2T很简单.假设a为偶数 ,b c为奇数 N为奇数.则S=(偶+奇+奇)*(奇+偶+偶)*(奇+奇+奇)=偶数 如果N为偶数,则S=偶数.可以发现无论a b c N 的奇偶性怎么变,S始终为偶数.所以选A.
百位有4种选法,十位有4种选法,个位有3种选法4*4*3=48个位是1或3的选法有3*3+3*3=18用0,1,2,3,4这五个数字可组成48个没有重复数字的三位数,其中有18个奇数.
奇数要从1.3中选一个,2种,0不在首位,首位有3种,中间2个数就从剩下的3个里面选2个,3种,最后中间两个数全排列,2种.共2*3*3*2=36
尾数为1时 有4*3=12个尾数为3时 有4*3=12个 5时 也是12个所以有36个
首先算出由12345组成的比20000大的五位数的个数:由于万位只能是2345其中一个,所以是4*4*3*2*1=96(个) 再算出里面百位数是3的个数:由于百位已经定了是3,而万位就只能是245其中一个,所以是3*3*2*1=18(个) 所有的五位数减去百位是3的个数就是所求的答案,即96-18=78(个)
96 再问: 怎么做呀 再答: 2,3,4,5在第一位,剩下的四个数所有组合,再乘以四即可~再问: 3q 再答: 也就是24*4可以理解么…
个位只能是0,2,4在这里,如果0在最高位的话,就当他是个 十位 数因此3种* A4(2)=3*4*3=36个
4×4×3×2×1=96(个)答:组成96个没有重复数字的五位数.
除去0,剩1,2,3,4,四个数.有123,124,234,134四种组合,每种有6种排列方法,如:123:123,132,213,231,312,321,共24个三位数有0的三位数则为:012,013,014,023,024,034,六种组合,每组有四种排列方法,如:012:120,210,102,201共24个三位
4×4×3×2×1=96个答可组成96个无重复数字大于2000的整数五位数3×4×3×2=72个答可组成72个无重复数字大于2000的整数四位数那么共有:96+72=168个大于2000的整数
个位上可以安排2个数百位上可以安排3个数十位上可以安排3个数根据乘法原理,2*3*3=18个求解个位012路?_百度知道
求解个位012路?
您的回答被采纳后将获得:
系统奖励15(财富值+成长值)+难题奖励20(财富值+成长值)
我有更好的答案
听你们说的这么多,我来告诉你们,这个其实真的是有技巧的,如果没有技巧为什么有那么多人一夜暴富呢,说实在的,也许我们还是不懂这些技巧的东西,没关系我推荐个老师给你们,他会的很多,你们可以加他,跟他沟通一下(V;;;;;Q;;)前面三个876后面四个4848。希望可以帮到你活
1条折叠回答
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。excel vba常见问题解答
我的图书馆
excel vba常见问题解答
excel vba常见问题
--------引用
001。用命令按扭打印一个sheet1中B2:M30区域中的内容?我想在Sheet2中制件一个命令按扭, 打印表Sheet1中的[B2:M30] 区域中的内容?解答:可以将打印区域设为b2:m30,然后打印,如:sheets("sheet1").printarea="b2:m30"sheets("sheet1").printout随手写的,你可以试试看。最简单的方法是:你先 录制宏,在录制宏过程中, 跑到页面设置里面, 把打印范围设置到你想要的范围。然后退出,停止录制宏, 你就可以得到一些代码!
002。能否对一列中的文字统一去掉最后一个字?这些文字不统一,有些字数多,有些字数少。如何处理?我用{"&-}不行解答:=REPLACE(A1,LEN(A1),1," ")(在过渡列进行)
003.能否根据单元格数值自动标记序号?各位大佬,一工作表有两列,“序号”及“金额”,能否将金额不等于0的行自动标上序号呢?如无现成的函数,应怎样设置?解答:Dim xuhao As Integerxuhao = 1Range("b2").SelectDo While Selection && ""& If Selection && 0 Then& ActiveCell.Previous.Value = xuhao& xuhao = xuhao + 1& End If& ActiveCell.Offset(1, 0).Range("a1").SelectLoop
004.求教自定义函数查询了一些自定义函数的例子都是单变量的。自定义函数能否建立“(As Range) As Interger”的函数,应该可以的,请各位大师赐教!请以“∑x2”为例,万分感谢!(该用"For Each ...Next",就是还不知道如何引用Range中的每个值,请高手指点。)解答:参数使用Range而函数值为Integer是可以的用for each next循环思路也是对的,应该这样作:dim rg as rangedim ivalue as integerfor each rg in 参数区域ivalue=ivalue+rg.valuenext函数=ivalue大概意思如此,但没有加入防错处理,你自己先试试看,有问题在问。又问:试了一天,还是不行。Public Function x2(rng As Range) As IntegerDim rng As RangeDim ivalue As IntegerFor Each rng In rng.Rangeivalue = ivalue + rng.value ^ 2Nextx2 = ivalueEnd Function还望您的帮助。解答:Public Function SUMX2(rng As Range) As Integer&&& '你的错误有几项:&&& '1.函数名不能使用单元格位址的形式,否则在工作表中引用函数产生歧义,excel以为你引用单元格&&& '2.参数名与内部变量名冲突,rng本来是定义参数,在过程中不应出现重名变量&&& '3.rng已被定义为range对象变量,实际意义是一range引用,不能再用rng.Range引用,range的range属性是什么呢,没有吧&&& '函数我已经给你改了,基本能用&&& Dim rg As Range&&& Dim ivalue As Integer&&&&&&& For Each rg In rng&&&&&&&&&&& ivalue = ivalue + rg.value ^ 2&&&&&&& Next&&& SUMX2 = ivalueEnd Function结果:调试成功!,非常感谢!
005.判斷字符串的包含性用什么命 令“abcdefg”是否包含“abc”?解答:If VBA.InStr(1, "abcdefg", "abc") && 0 Then MsgBox "包含"
006.利用背景实现套打的解决方案利用背景套打主要在于数据打印位置的确定,关键就是要使图片和实物之间的尺寸保持一致,这里我引入一个中间参照物—空白表(只有表格线的表)。具体操作以套打支票为例说明:&&&&&&&&& (1)将支票扫描成图片。&&&&&&&&& (2)打印一个空白表,使其与支票尺寸一致(需反复调整打印,也可行、列分别打印)。&&&&&&&&& (3)用“画图”的缩放功能调整图片大小,导入excel作背景,并使其与空白表大小一致(亦需反复调整导入,每次均用原图缩放,再另存为一个文件)。&&&&&&&&& (4)根据图片背景调整好单元格,填入数据后套打支票,效果是匹配度达99%。&&&&&&&&& (5)由于每次都是用原图缩放,故可取得缩放比例作为参数,再套打其他表格时,即可直接依参数缩放图片。&&&&&&&&& 思路:因为空白表=支票,图片=空白表,所以图片=支票。&&&&&&&&& 该方案已证实可行。
007.宏放在worksheet和sheet及模块中各有什么区别?解答:放在thisworkbook或sheet中的宏与模块中的宏的主要区别是book或sheet中的过程函数只能是对象所专有的,不能在对象之外的任何地方调用(很显然不能声明Public过程,否则编译报错),而模块中声明Public过程函数可以在任何地方使用。
008.关于excel问题在excel中如何用公式实现单元格内容递增?如:&&& AB12&&&&&&&&& AB13&&&&&&&&& AB14&&&&&&&&& .......&&&&&&&&& AB100条件是无法确定储存格中的内容的前面有多少个字符,也就是,可能是2个,也可能是3个,或者更多。解答:為什麼要用公式呢?如 A1 = AB12 ,只要你向下拉的複制就可以。
公式可參考 (條件是 AB12 不可以是 AB02, 處理 0 為首的數字 有困難,亦不可以只有英文字)A1 = AB12A2 = LEFT(A1,LEN(A1)-SUM(LEN(A1)-LEN(SUBSTITUTE(A1,{"0","1","2","3","4","5","6","7","8","9"},"")))) & RIGHT(A1,SUM(LEN(A1)-LEN(SUBSTITUTE(A1,{"0","1","2","3","4","5","6","7","8","9"},""))))+1(A1 = AB12
公式=LEN(SUBSTITUTE(A1,{"0","1","2","3","4","5","6","7","8","9"},""))答案看到的是 4 ,但其實它回傳一個數組 {4,3,3,4,4,4,4,4,4,4}
公式=LEN(A1)-LEN(SUBSTITUTE(A1,{"0","1","2","3","4","5","6","7","8","9"},""))答案看到的是 0 ,但其實它回傳一個數組 {0,1,1,0,0,0,0,0,0,0}
公式=SUM(LEN(A1)-LEN(SUBSTITUTE(A1,{"0","1","2","3","4","5","6","7","8","9"},""))) 是將 {0,1,1,0,0,0,0,0,0,0} 加總= 2)
009.给数组公式、VBA爱好者泼点冷水。数组公式、VBA威力巨大,在某些情形下提高效率非常明显,但各有其弱点。数组公式在大数据的时候,运行速度慢得无法忍受。比如,我日常需要编制得几个报表,原始数据有4-8万行,20——30列,用数组根本无法操作。倒是利用数据透视表及其他一些组合功能,可谓神速。而VBA主要适用与日常比较固定的一些工作,对于一些临时性工作而言,缺乏灵活性,有杀鸡用牛刀之嫌疑。因此,根据我个人多年工作经验的体会,能熟练地灵活运用EXCEL基本功能和常用函数,就可以高效地完成大部分日常工作。我比较常用地东西有:数据透视表,数据——有效性,ctrl+enter,index ,match,indirect,offset,if,vlookup,下拉列表框,绝对引用与相对引用,编辑——选择性粘贴(数值、乘除、转置等),图表,条件格式,定义名称,分列,填充等。相反观点:数据透视表的计算是excel中内置的,同样的计算次数速度与数组公式是一样的,数组公式计算慢有两个因素,一是公式的编写不合理,另一个主要的原因是数组公式要对所有的引用数据进行计算,不管这些数据是否有效。VBA应该是最灵活的,在VBA中结合数组公式是可以达到最佳目的的,可用VBA先分析出数组公式要用的有效引用区域,在辅助表中进行数组计算(这个速度比用VBA直接分析计算要快得多),再将结果记入需要的单元格中,然后删除辅助表。其实你说的那些基本操作均可用VBA来做的,速度比手工做要快。
010.从式子抽取一小式子的问题?b1=sum(a1:a10)+(10+20)/4,怎么从中取出(10+20)/4或其结果(即5)?用evaluate、get.cell都不能取出。解答:定义X=get.formula($B$1)得到B1的公式,再用MID、Right等函数截取
011.or可以用数组应用?有一个工作表,数据上万行,其中一列是我要分析的数值,数值比如为:,,,0117中的任何一个。我要统计除,0115之外的数据。公式:{sum(if(or(sheet!A2:A",sheet!a2:a",sheet!a2:a"),1,0))},可是统计数字和我筛选相加的不一样,用if层层选,可以。请问原因?解答:数组公式中用*、+代替AND、OR{sum(if((sheet!A2:A")+(sheet!a2:a")+(sheet!a2:a"),1,0))}
012.countif表达式的格式请问:我想找A1:A15中,值不为空的数目,用countif命令怎么写呢?解答1:应为counta(a1:a15)。countif为找a1:a15中,特定值的数目。解答2:=ROWS(A1:A15)*COLUMNS(A1:A15)-COUNTIF(A1:A15,"")=ROWS(A1:A15)*COLUMNS(A1:A15)-COUNTBLANK(A1:A15)解答3:直接用count(a1:a15)不是更好吗!
013.删除字符串中某个字符的函数是什么?删除字符串中某个字符的函数是什么?举例:字符串“i love you a!"想删除a字面,应该用什么函数实现?还有就是在字符串中某个位置加入某个字符用什么函数呢?解答:如果有一定的规律,可以用Replace函数。例如:在A1单元格已有的字符串&#"中加入个5变为&#”。可以这样做:=replace(a1,5,,"5")另一方法:用CONCATENATE函数。例如:a5单元格里的数据是“asdfhjkl",在另外的单元格了输入下面的函数CONCATENATE(LEFT(A5,4),"l",RIGHT(A5,4)),得到的结果就是”asdflhjkl",然后用“选择性粘贴,粘贴数值”粘贴回a5单元格就可以了。
014.两表合一实例&&& 问题提出:怎样把两个表(有相同的字段)怎样合并成一个表?&&&& 思路:用CountIf()函数对表1进行判断,如果其值为0,则表示没以重复,再将表2中和表1不重复的数据复制到表1中,从而实现两表合一。解题的方法:Sub dd()b = Sheets(2).[a1].CurrentRegion.Rows.Count + 1 ‘判断表2的行数For i = 3 To ba = Sheets(1).[a1].CurrentRegion.Rows.Count + 1 ‘判断表1的行数c = Sheets(2).[a1].CurrentRegion.Columns.Count  ‘判断表2的列数If Application.WorksheetFunction.CountIf(Sheets(1).[b1:b1000], Sheets(2).Cells(i, 2)) = 0 ThenSheets(2).Range(Sheets(2).Cells(i, 1), Sheets(2).Cells(i, c)).Copy Sheets(1).Cells(a, 1) ‘将表2中与表1不重复的数据复制到表1中End IfNextEnd Sub
015.有没有办法把加载宏内置到Excel文件里?因为用了 Networkdays 函数,用到了分析工具库,但是还要发给别人,怎么办?解答:试试在"Thisworkbook"中写如下语句:Private Sub Workbook_Open()&&& Application.RegisterXLL Filename:= _&&&&&&& "Office安装路径\Office\Library\Analysis\ANALYS32.XLL"End Sub又问:Office安装路径怎么写呀?大家不一定都装在C盘上。解答:试试:Application.Path & "\Library\Analysis\ANALYS32.XLL"
046.如何在userform上显示最大化与最小化按钮解答:利用APIOption ExplicitPrivate Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As LongPrivate Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPrivate Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPrivate Const GWL_STYLE = (-16)Private Const WS_THICKFRAME As Long = &H40000&&&& '(恢复大小)Private Const WS_MINIMIZEBOX As Long = &H20000&&& '(最小化)Private Const WS_MAXIMIZEBOX As Long = &H10000&&& '(最大化)
Private Sub UserForm_Initialize()& Dim hWndForm As Long& Dim IStyle As Long& hWndForm = FindWindow("ThunderDFrame", Me.Caption)& IStyle = GetWindowLong(hWndForm, GWL_STYLE)& IStyle = IStyle Or WS_THICKFRAME& '还原& IStyle = IStyle Or WS_MINIMIZEBOX '最小化& IStyle = IStyle Or WS_MAXIMIZEBOX '最大化& SetWindowLong hWndForm, GWL_STYLE, IStyleEnd Sub
017.这个判断代码怎么写在A列输入日期,如果所输入日期为1月1日或5月1日则B列相关单元格+1,其他日期+0,这要用到什么函数?代码怎么写?谢谢!解答:用IF函数或用Worksheet_Change事件Private Sub Worksheet_Change(ByVal Target As Range)&&& If Target.Column = 1 Then&&&&&&& If IsDate(Target) Then&&&&&&&&&&& If (Month(Target) = 1 And Day(Target) = 1) Or (Month(Target) = 5 And Day(Target) = 1) Then&&&&&&&&&&&&&&& Target.Offset(0, 1) = Target.Offset(0, 1) + 1&&&&&&&&&&& End If&&&&&&& End If&&& End IfEnd Sub
018.这个汇总表拆分程序怎么写,高手帮忙!要将总表里的数据按工作单位字段拆分成数个分表(每个单位一张表格,标签名字为工作单位)这个程序怎么编写,请高手指点。如果记录增多或字段增多(但拆分字段不增)这个程序又应该怎样改写,请高手稍微讲解一下,应为我不是为这一个表,还想用到别的工作表中,谢谢!解答:Sub Add_data(sht_Name)&& '找出要取资料的区域&&& Dim i As Integer, j As Integer, row_d As Integer&&& Dim First_row As Integer, Last_row As Integer&&& On Error Resume Next&&& With Sheets("总表")&&&&&&& i = 1&&&&&&& Do Until .Cells(i, 3).value = sht_Name&&&&&&&&&&& i = i + 1&&&&&&& Loop&&&&&&& First_row = i&&&&&&& &&&&&&& j = First_row&&&&&&& Do Until .Cells(j, 3) && sht_Name&&&&&&&&&&& j = j + 1&&&&&&& Loop&&&&&&& Last_row = j - 1&&& End With&&& Sheets("总表").Range(Cells(First_row, 1), Cells(Last_row, 12)).Select&&& Selection.Copy&&& Sheets(sht_Name).Select&&& Range("A2").Select&&& ActiveSheet.Paste&&& With ActiveSheet&&&&&&& row_d = .Range("A2").End(xlDown).Row + 1&&&&&&& Range("B" & row_d).value = "合计"&&&&&&& For i = 5 To 11&&&&&&&&&&& Cells(row_d, i).value = Application.WorksheetFunction.Sum(Range(Cells(2, i), Cells(row_d - 1, i)))&&&&&&& Next i&&& End With&&& &&& Sheets("总表").Activate&&& Range("A2").Select&&& End Sub
020.这个公式应该怎么写?我想统计所有物料编码的第一个字符为a的库存数量的总和,这个公式应该怎么写?A列为物料编码,B列为库存数量。解答:=SUMIF($A:$A,"a*",$B:$B)
021.样修改此宏?
下面的宏是k版主帮我写的,从文件夹内汇入其他工作表表格。汇入范围为第五行、第L列。如汇入范围改为第三行、第R列。怎样修改此宏?
Public Sub Feed_in2()Dim Row_dn, Row_dn1, i, j, k, m As IntegerDim Path1, Str1 As StringDim wb As WorkbookRow_dn = [B65536].End(xlUp).RowPath1 = Application.ActiveWorkbook.PathStr1 = ActiveWorkbook.Namek = 5
&&& With Application&&&&&&& .EnableEvents = False&&&&&&& .ScreenUpdating = False&&&&&&& If Row_dn &= 5 Then&&&&&&&&&&& Range("B5:L" & Row_dn).ClearContents&&&&&&& End If&&&&&&& With .FileSearch&&&&&&&&&&& .NewSearch&&&&&&&&&&& .LookIn = Path1&&&&&&&&&&& .FileType = msoFileTypeExcelWorkbooks&&&&&&&&&&& If .Execute &= 1 Then&&&&&&&&&&&&&&& MsgBox "files no found": Exit Sub&&&&&&&&&&& Else&&&&&&&&&&&&&&& For m = 1 To .FoundFiles.Count&&&&&&&&&&&&&&&&&&& Str2 = Split(.FoundFiles(m), "\")&&&&&&&&&&&&&&&&&&& n1 = UBound(Str2)&&&&&&&&&&&&&&&&&&& Str2 = Str2(n1)&&&&&&&&&&&&&&&&&&& If Str2 && Str1 Then&&&&&&&&&&&&&&&&&&&&&&& Set wb = Workbooks.Open((Path1 & "\" & Str2), True, True)&&&&&&&&&&&&&&&&&&&&&&& Row_dn1 = wb.Sheets(1).[B65536].End(xlUp).Row&&&&&&&&&&&&&&&&&&&&&&& For i = 5 To Row_dn1&&&&&&&&&&&&&&&&&&&&&&&&&&& For j = 2 To 12&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& Workbooks(Str1).Sheets(1).Cells(k, j) _&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& = wb.Sheets(1).Cells(i, j)&&&&&&&&&&&&&&&&&&&&&&&&&&& Next j&&&&&&&&&&&&&&&&&&&&&&&&&&& k = k + 1&&&&&&&&&&&&&&&&&&&&&&& Next i&&&&&&&&&&&&&&&&&&&&&&& wb.Close False&&&&&&&&&&&&&&&&&&&&&&& Set wb = Nothing&&&&&&&&&&&&&&&&&&& End If&&&&&&&&&&&&&&& Next m&&&&&&&&&&& End If&&&&&&& End With&&&&&&& .EnableEvents = True&&& End With&&& End Sub解答:除了B65536中的5,其余5都改成3;将Range("B5:L" & Row_dn)改成Range("B5:R" & Row_dn);将For j = 2 To 12改成For j = 2 To 17。
022.怎样控制textbox的只读,要使textbox中的数据不能改变(删除或修改),在属性里我没有找到有相关的方法吗?解答:Textbox.Enabled = False,直接修改控件属性都行。又问:这样还不行,因为Textbox在显示上就灰显了,我想只让它不可改变值,在显示上还是原来的形式。解答:那就用Label代替,设置BackColor和SpecialEffect属性。
023.请教个小问题!你好:我录制了个删除工作表的宏,但每次运行后,总出现确认删除提示框,请问该如何编写,直接默认删除,不在作确认呢?解答:Application.DisplayAlerts = False代码为:Sub Dell()&&&& '&&&& '& Dell Macro&&&& '& DC.Direct 记录的宏 &&&&&&& Application.DisplayAlerts = False&&&&&&& Sheets("Sheet2").Select&&&&&&& ActiveWindow.SelectedSheets.Delete
&&&&&&& ActiveWorkbook.Save&&&&&&& Application.DisplayAlerts = True&&&&& End Sub
024.小知识:当垂直滚动条滚动到无法显示1-3行时,冻结窗口,1-3行就好像被隐藏了,但是取消隐藏也不行。
025.选A1后,自动显示B1内容,有无方法实现。有A1列和B1两列,*D1处做了数据-有效性-序列-选择A1~A9*D1选择A1时,要求在G1中自动跳出B1的内容, 选A2时,自动跳出B2的内容*余此类推。解答:G1公式:=Vlookup(D1,A1:B9,2,0)又问:假设,有C列中也有数据,我要在G1中显示C列中的数据,该怎么算?解答:G1公式:=Vlookup(D1,A1:B9,3,0)
026. 向上填充的快捷键是什么?我只会向下填充的快捷键,向上-向左-向右的都是什么呢?解答:向上-Alt+E,I,U。向左-Alt+E,I,L。向右-CTRL+R
027.下方单元格上移,包含该单元格的公式不要变化哪位高手帮帮忙!我试验了很久也没找到解决的办法:能不能做到删除单元格以后,下方单元格上移,包含该单元格的公式不要变化。或者是:按住shift拖动单元格,使两个单元格互相交换位置以后,包含该单元格的公式不要发生变化。注意,用加$的办法是不能解决这个问题的,如公式改为:=SUM($A$1:$A$9),经上述操作后,结果还是一样。解答:=SUM(INDIRECT("A1:A10")) 新问题:但是还有一个问题:我这一列有2000多个数据,似乎不能通过拖动的办法将公式复制200遍,达到每10个1求和的结果。解答:=IF(MOD(ROW(),10)&&0,"",SUM(OFFSET(INDIRECT(ADDRESS(ROW(),COLUMN(),)),,-1,-10,)))
028.一列中删除重复数据的方法例如在C2:C500中有重复数据。在D2中 =COUNTIF(C2:$C$100,C2) 计算出 C2在此列中的出现次数,然后复制公式到整列,最后删除在D列中大于1的行即可.
029.哪为大侠来帮忙关于VBA的问题小弟想同时对excel工作簿下的几个工作表进行插入图表的操作!这几个工作表中已经在相同的位置区域内输入了数据. 语言如下: 运行显示 "下表越界" (下划线的地方)。请问高手又什么办法解决,或者可以用其它的方法。sub biaoge()for a = 1 to 3sheets("sheet(a)").select&&& charts.add&&& activechart.applycustomtype charttype:=xlbuiltin, typename:="两轴线-柱图"& activechart.setsourcedata source:=sheets("sheet (a)").range("a1:j3"), plotby:=xlrows&&& activechart.location where:=xllocationasobject, name:="sheet(a)"&&&&&& activechart.hasdatatable = true&&& activechart.datatable.showlegendkey = true&&& activechart.legend.select&&& selection.delete&next aend sub 解答:sheets("sheet(a)").select是错的。可以用sheets("Sheet_Name").select。
029.比较大小例如512.03,我用函数取了这个数的最后两个数03用他与10比较,结果总是显示03&10,不知道是什么原因,请高手指点,谢谢!!!解答:取后两位数结果是文本型,对比可用right(a1,2)*1&10或者用:value(right(a1,2))&10也可
030.讨论:用RANGE和CELLS选择单元格EXCEL的基本元素就是单元格,第一步就是要学会操作单元格了,列举两种方式。SUB RANGE() ‘用RANGE选择B5单元格&RANGE().SELECTEND SUBSUB CELLS() ‘用CELLS选择B5单元格&CELLS(5,2).SELECTEND SUBRANGE编程时无法变化,CELLS可以通过变量选择单元格。回应1:RANGE 一样方便, 甚至更方便. 实际使用中可以用一变量srArea="B" & iRANGE(srArea).SELECTsrArea="金额" ' 一命名为 金额 的单元格/区域RANGE(srArea).SELECT回应2:我觉得各有长处,如果有变量需要循环判断,用Cells相对比较简单,但是有时候固定区域的,命名后用Range更灵活。回应3:没错. 帮助中也是推荐 CELL 的.灵活性来讲, RANGE 要强多了, 而且使用时可以通过 . 提取符快速读取它的属性和方法.另外, 对于可变更的工作表, 用 RANGE 来操作命名区域将增加程序的弹性.比如工作中插入一行/列, VBA 中用 CELL 就可能导致运行操作错误, 而 RANGE(srArea) 作为指定区域, 可适应单元格的这类变更.
031.关于FileSystemObject的引用请问各路高手,有人可以为我指点一下filesystemobject引用的详细说明,特别是fileexists方法的实例。  解答:Sub testing()&&& &&& '先判断文件是否存在,是则删除之&&& &&& Dim strmyfile As String&&& strmyfile = "d:\book1.xls"&&& If filetoFind(strmyfile) Then&&&&&&& Kill strmyfile&&& End If&&& End Sub
Function filetoFind(fileName As String) As Boolean&&& Dim fsobj As Object&&& Set fsobj = CreateObject("Scripting.FileSystemObject")&&& If fsobj.fileexists(fileName) Then&&&&&&& filetoFind = True&&& End IfEnd Function在帮助文件中是这样描述的:FileSystemObject 对象&& 描述:提供对计算机文件系统的访问。语法:Scripting.FileSystemObject说明:下面的代码举例说明了如何使用 FileSystemObject 返回一个 TextStream 对象,该对象是可读并可写的:Set fs = CreateObject("Scripting.FileSystemObject")Set a = fs.CreateTextFile("c:\testfile.txt", True)a.WriteLine("This is a test.")a.Close在上面列出的代码中,CreateObject 函数返回 FileSystemObject (fs)。CreateTextFile 方法接着创建文件作为一个 TextStream 对象(a),而 WriteLine 方法则向创建的文本文件中写入一行文本。Close 方法刷新缓冲区并关闭文件。FileExists 方法描述:如果指定的文件存在,返回 True,若不存在,则返回 False。语法:object.FileExists(filespec) FileExists 方法语法有如下几部分:部分 描述:object 必需的。始终是一个 FileSystemObject 的名字。 filespec 必需的。要确定是否存在的文件的名字。如果认为文件不在当前文件夹中,必须提供一个完整的路径说明(绝对的或相对的)。
032.excel时间函数2(菜鸟教程)这一贴说明时间函数,time,hour,minute,second的用法。time的计算过程:time(hour,minute,second),time地返回值为0-0.之间的数值,它的计算方法如下:hour的范围:0-24minute的范围:0-59second的范围:0-59在满足以上输入范围的时候:time(hour,minute,second)=hour/24+minute/(24*60)+second/(24*60*60)。如:tiem(05,34,29)=0.593.如何计算的呢?5/24+34/(24*60)+29/(24*60*60)=0.333+0.1111+0..593。在帮助文件里还有hour,minute,second不再范围情况,这时候,如何计算的呢?1、second/60,除的整数为minute,mod(second,60)为second2、minute/60,除的整数为hour,mod(minute,60)为minute3、hour/24,mod(hour,24)为hour最后再用hour/24+minute/(24*60)+second/(24*60*60)计算。帮助中的例子:time(0,0,148如何算的呢?&& mod(time(0,0,2000)=time(0,33,20)=0/24+33/(24*60)=20/(24*60*60)=0.023148呵呵,其实没有什么用,会用这个函数就可以可,如何算的就不必在意了!!!
033.年月日的问题&&& EXCEL表格中年月有时候输入不对,(早已记录过大量数据,改写麻烦。)比如198001,意思是1980年1月,可是设置单元格式日期只有年月日,没有年月。怎么做?解答:插入一辅助列,假设198001在E1,F=IF(MID(E1,5,1)="0",LEFT(E1,4)&"年"&RIGHT(E1,1)&"月",LEFT(E1,4)&"年"&RIGHT(E1,2)&"月")试一下。又问:198001能否改为1980-1?或者1980年1月改为1980-1?解答:f1=IF(MID(e1,5,1)="0",LEFT(e1,4)&"-"&RIGHT(e1,1),LEFT(e1,4)&"-"&RIGHT(e1,2))或者更简单一些:=LEFT(A6,4)&"-"&value(RIGHT(A6,2))(数据在a6单元格)也可以这样:=date(mid(e1,1,4),mdi(e1,5,2),1)这样会显示为,然后可以随意设置成相应的日期格式。
034.请帮忙解释一个公式=LEFT(A1,(SEARCHB("?",A1)-1)/2)这是我在站内过去的帖子里看到的一个公式,用于提取前文后数中的文字部分,非常好用。请教这个公式中最后两步的意义是什么?另外,当A1是&#个”的格式时,当如何提取其中的文字呢?解答:1、公式的含义是:查找第一个半角字符出现的位置[SEARCHB("?",A1)],减去1后除以2,就是文字的字符数目,将其提取出来。2、=RIGHT(A1,LENB(A1)-LEN(A1))
035.关于宏和程序我现在已经用excel编了一个较完整的程序,并且能够给源程序加密码,实现"工程不可见",但是我发现在vba编辑环境 里还能看到我的大部分宏,虽然说不能编辑,但能运行,请问如何隐藏起来。解答:不用模块函数,重写成类或放到workbook中,或在程序中直接将菜单宏隐藏。或者:新建类,然后将模块中的程序拷贝到类,提示:找不到宏。又问:我现在已经能做到屏蔽调alt+F11键了,虽然不能看到我的宏程序,但是依然可以运行我的宏,请高手做答,如何隐藏起我的宏。解答:在宏的声明前加Private。
036.请教多条件求和的问题大家好,我是个新手,想向大家请教指定多条件求和的函数公式。譬如,有一张工作表有4列标题:品名,数量,日期,签收人。若我想求,符合条件为:品名为A,日期为Y,签收人为B的数量之和。该用那个函数公式?解答:=IF(A2="a",IF(B2="03.10.22",COUNTIF(D:D,D2),"时间无"),"无")A列品名,B列日期,C列数量,D列签收人用if 嵌套。或者:数组公式{=sum((a1:a100=品名)*(c1:c100=日期)(d1:d100=签收人)*(B1:B100))}也可以:{=SUM((($A$1:$A$100)="a")*(($B$1:$B$100)="03.10.22"))}
037.请教关于星期的计算?如何通过输入一个日期:即可得到该天在本年度的第几个星期?解答:使用 WEEKNUM 函数。如:=WEEKNUM(A1)=WEEKNUM(TODAY())或者:日期在a1=INT((A1-DATE(YEAR(A1),1,0)+WEEKDAY(DATE(YEAR(A1),1,0),1)+7-WEEKDAY(A1,1))/7)也可以用VBA:'under the iso standard, a week always begins on a monday, and ends on a sunday.'the first week of a year is that week which contains the first thursday of the year,'or, equivalently, contains jan-4.'public function isoweeknum(anydate as date, _&&&& optional whichformat as variant) as integer'' whichformat: missing or && 2 then returns week number,'&&&&&&&&&&&&& = 2 then yyww'&&& dim thisyear as integer&&& dim previousyearstart as date&&& dim thisyearstart as date&&& dim nextyearstart as date&&& dim yearnum as integer
&&& thisyear = year(anydate)&&& thisyearstart = yearstart(thisyear)&&& previousyearstart = yearstart(thisyear - 1)&&& nextyearstart = yearstart(thisyear + 1)&&& select case anydate&&&&&&& case is &= nextyearstart&&&&&&&&&&& isoweeknum = (anydate - nextyearstart) \ 7 + 1&&&&&&&&&&& yearnum = year(anydate) + 1&&&&&&& case is & thisyearstart&&&&&&&&&&& isoweeknum = (anydate - previousyearstart) \ 7 + 1&&&&&&&&&&& yearnum = year(anydate) - 1&&&&&&& case else&&&&&&&&&&& isoweeknum = (anydate - thisyearstart) \ 7 + 1&&&&&&&&&&& yearnum = year(anydate)&&& end select&&& if ismissing(whichformat) then&&&&&&& exit function&&& end if&&& if whichformat = 2 then&&&&&&& isoweeknum = cint(format(right(yearnum, 2), "00") & _&&&&&&& format(isoweeknum, "00"))&&& end ifend function
public function yearstart(whichyear as integer) as datedim weekday as integerdim newyear as date
newyear = dateserial(whichyear, 1, 1)weekday = (newyear - 2) mod 7if weekday & 4 then&&& yearstart = newyear - weekdayelse&&& yearstart = newyear - weekday + 7end ifend function
038.请教日期的转换问题我的程序里有这样一段代码:Dim str As Datestr=nowSheet1.Cells(1, "A") = str运行后在单元格里显示& 15:19:45但我想让它显示成如下的格式:2003年11月13日(小时,分,秒去掉)我用year(str)想单独取得年的值,但显示& 0:00:00请问有什么好的方法可以实现这种转换吗?解答:Dim str As Datestr=nowSheet1.Cells(1, "A") = format(str,"yyyy年mm月dd日")
039.如何用vba实现删除最右边的字符1月、2月、3月...........10月、11月、12月请问如何用vba实现把“月”删除 只提取:1、2、3.......10、11、12。解答:Sub abc()Dim a As IntegerDim b As StringDim c As Stringc = ""For a = 1 To Len(b)&&& c = c & IIf(Mid(b, a, 1) && "月", Mid(b, a, 1), "")NextMsgBox cEnd Sub或者:A1= 1月、2月、3月、4月、5月、6月、7月、8月、9月、10月、11月、12月[A1] = Application.WorksheetFunction.Substitute([A1], "月", "")
040.请问如何定义相对定位的名称我想定义一个各个工作表(一个工作薄内)使用的名称。该名称为相对定位,如我在sheet1表的B2中该名称是 sheet1 表的A2,我在sheet2表的B2中时该名称是sheet2表的A2单元格,可我在定义名称时它总是加上工作表名。解答:=offset(indirect(address(row(),column(),)),,-1,,)
041.请问如何替换?有很多条这样的记录:******(212),****(315),*********(658)。如何只保留括号里的数字,*号是汉字。解答:设数据在A30单元格 =MID(A30,FIND("(",A30)+1,LEN(A30)-FIND("(",A30)-1)IF 你的数据都是要求记录中最后面的三码数字可以试着用简单的方式解决& =RIGHT(A1,3)又问:我是要合并,你却要拆分!你能告诉我怎样将两列:即“数字列”和“文字列”合并成一列?解答:试试这个:Sub Join() '将选择的行几个单元格数值合并到一列的一个单元格& Application.ScreenUpdating = False& Application.Calculation = xlCalculationManual& On Error Resume Next& Dim iRows As Long, mRow As Long, ir As Long, ic As Long& iRows = Selection.Rows.Count& Set lastcell = Cells.SpecialCells(xlLastCell)& mRow = lastcell.Row& If mRow & iRows Then iRows = mRow 'not best but better than nothing& iCols = Selection.Columns.Count& For ir = 1 To iRows&&&& newcell = Trim(Selection.Item(ir, 1).value)&&&& For ic = 2 To iCols&&&&&& trimmed = Trim(Selection.Item(ir, ic).value)&&&&&& If Len(trimmed) && 0 Then newcell = newcell & " " & trimmed&&&&&& Selection.Item(ir, ic) = ""&&&& Next ic&&&& Selection.Item(ir, 1).value = newcell& Next ir& Application.Calculation = xlCalculationAutomatic& Application.ScreenUpdating = TrueEnd Sub
042.求教合并单元格区域的连续读取方法求教:1、如何选定连续的合并单元格区域;2、如何连续读取合并单元格中的内容。解答:Public Sub adre()Dim cell As RangeDim iRow_dn1 As IntegeriRow_dn1 = [B65536].End(xlUp).RowSet av1 = Range("B3:B" & iRow_dn1)&&& For Each cell In av1&&&&&&&&&&& If cell && "" Then&&&&&&&&&&& MsgBox cell.Address & " 等於 " & " ※ " & cell & " §"&&&&&&& End If&&&&&&& &&& Next&&& End Sub
043.求一公式sheet1&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& sheet2&&&&&&&&&&& A&&&&&&&&&&&&& B&&&&&&&&&&& C&&&&&&&&&&&&&&&&&& A&&&&&&&&&&&& B&&&&&&&&&&&&&&&& C1&&&&& 产品代码&&& 产品名&&&& 生产机器名&&&&&& 产品代码&&& 产品名&&&& 生产机器名2&&&&& 012354&&&&& a203&&&&&&&& 1m炉&&&&&&&&&&&& 225894&&&&&& nj033&&&&&&&&&&&&& ?3&&&&& 214345&&&&& b4032&&&&&& 发泡炉&&&&&&&&&& 056894&&&&&& kkl001&&&&&&&&&&&& ?&&&&&&&& 4&&&&& 225894&&&&& nj033&&&&&&& 1m炉&&&&&&&&&&&& 214345&&&&&& b4032&&&&&&&&&&&& ?5&&&&& 056894&&&&& kkl001&&&&&&& 发泡炉&&&&&&&&&&&&&&&&& 6&&&&& 124589&&&&& lli002&&&&&&&& 1m炉&&&&&&&&&&&&
SHEET1是一张源资料表,而SHEET2是一个生产计划表的一部分。请问:&&&&&&& 我求SHEET2中的A列中产品代码相对应的C列的”生产机器名“。&&&&&&& 这个公式怎么写?解答:Sheet2的C2格公式为:=VLOOKUP($A2,SHEET1!A:C,3,0)
044.讨论一下取最后一个单词的方法例如现在在A1中有一句“M. Henry Jackey”,如何用函数将最后的一个单词取出来呢? 当然,我们现在是知道最后的单词是6个字符,可以用Right(A1,6)来计算,但如果最后一个单词的字符数是不定的呢,如果做呢? 请大家试下有几种方法。解答:方法1、用一列公式填充=IF(LEFT(RIGHT($A$1,ROW()),1)=CHAR(32),RIGHT($A$1,ROW()-1),“”)方法2、=MID(A1,FIND("&&&&&& *",SUBSTITUTE(A1," ","&&&&&& *",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))))+1,LEN(A1)-FIND(" ",A1))方法3、用自定义函数当然方便,而且简单。Function xx(n As String) As String&&& n = Application.Trim(n)&&& lastone = Right(n, Len(n) - InStrRev(n, " "))&&& xx = lastoneEnd Function方法4、=IF(ISERROR(SEARCH("",TRIM(LEFT(B1)))),RIGHT($A$1,ROW()),"")拖出来的第一个字符就行。方法5、{=RIGHT(A1,LEN(A1)-MAX((MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)=" ")*ROW(INDIRECT("1:"&LEN(A1)))))}嫌长就(假定最长100字符){=RIGHT(A1,LEN(A1)-MAX((MID(A1,ROW(1:100),1)=" ")*ROW(1:100)))}
045.如何获取工作表中某一列有多少条记录?因为每一列的的记录都不一样多,所以我想获得每一列各有多少条记录,怎么做?解答:RecordNumbers=Application.COUNTA(A:A)或者:Private Sub UserForm_Activate()x = Sheet1.UsedRange.Rows.Countx1 = Sheet1.CountA(c4, cx)也可以:Sub aa()& MsgBox (Application.CountA(Range("A:A")))End Sub还可以:Sub aa()x = Sheet1.UsedRange.Rows.CountMsgBox (Application.CountA(Range("c3:cx")))End Sub这样也行:用下面的方法可测出任一列使用的行数a=Sheet1.range("b1").End(xlDown).Row。总结: 1.Sub aa()& MsgBox (Application.CountA(Range("C:C")))End Sub结果永远都是1或者3,可是实际上记录有600多条2.Sub aa()Worksheets("sheet1").Activate&&& Range("c2").Select&&& x1 = "=COUNTA(sheet1!C)"&&& MsgBox x1End Sub这个是看fhj 示例的文件录制成宏改的,不过运行结果永远是 =counta(sheet1!c)3.Sub aa()&&& x1 = "=COUNTA(sheet1!C)"&&& MsgBox x1end sub提示和前面的一样。4.其实已经试了几十种方法了。还是错的。作为公式时,是可以使用。但是却无法把获得的值赋值给一个变量。除非是先写到一个单元格里,再重新读出来。不过我觉得太麻烦了。而且写的时候会修改工作表。不是很恰当。
解答:Application.CountA(Range("C:C"))返回除去无值单元格的所有单元格的数量。Sheet1.range("C1").End(xlDown).Row返回第一次遇到空单元格前的单元格的数量。(注:当C列有空白单元格时用:myEndRow=sheets("sheet1").range("C65536").End(xlUp).row)结论:Sub aa()x1 = Sheet1.Range("C3").End(xlDown).Row&&& MsgBox x1end sub这就对了。谢谢各位!回应:推荐你用&Columns(1).SpecialCells(xlCellTypeConstants).Count
045.如何禁止输入空格在Excel中如何通过编辑“有效数据”来禁止录入空格?烦请大侠们费心解答。不胜感激。解答:有效性公式。=COUNTIF(A1,"* *")=0(注:COUNTIF(A1,"* *") 在单元格有空格时结果为1,没有空格时结果为0如希望第一位不能输入空格:countif(a1," *")=0如希望最后一位不能输入空格:countif(a1,"* ")=0)
046.如何判断单元格中单词的数量?比如我在A1中输入“you are a good boy”如何判断单词为5个?解答:=LEN(E12)-LEN(SUBSTITUTE(E12," ",""))+1(注:方法很巧妙 用trim把前后的空格去掉。如果有标点符号或者两个词之间的空格数大于1个就不好办了)
047.如何取数表一有数据,要求表二中数据为取一行表一数据,空一行。解答:Sub test()On Error Resume NextApplication.ScreenUpdating = FalseFor i = 1 To Sheets(1).UsedRange.Rows.Count& Sheets(1).Rows(VBA.Trim(VBA.Str(i)) + ":" + VBA.Trim(VBA.Str(i))).Copy& Sheets(2).Activate& Sheets(2).Rows(VBA.Trim(VBA.Str(i * 2 - 1)) + ":" + VBA.Trim(VBA.Str(i * 2 - 1))).Select& ActiveSheet.PasteNext iApplication.ScreenUpdating = TrueEnd Sub
048.如何通过VBA编程将符合条件的数据库记录输入到EXCEL中现在有access格式的数据表 TEST
货号&&&&&&&&&&&&&&&&&& 货名&&&&&&&&&&&&&&&&&&& 规格&&&&&&&&&&&&&&&&& 单价....
1-01&&&&&&&&&&&&&&&& 货品1&&&&&&&&&&&&&&&&&& 1M&&&&&&&&&&&&&&&&& 250.00
1-02&&&&&&&&&&&&&&&& 货品2&&&&&&&&&&&&&&&&&& 4Kg&&&&&&&&&&&&&&&& 100.00
................
N-99&&&&&&&&&&&&&& 货品N&&&&&&&&&&&&&&&&&& 999&&&&&&&&&&&&&&&& 999.99
现在我想在EXCEL的单元格中输入货号,通过VBA代码自动从数据表中查找出相应的记录,并在相邻的列分别自动录入货品、规格、单价等内容,从而实现EXCEL自动数据录入。请问这VBA代码应如何写?谢谢!
解答:Private Sub Worksheet_Change(ByVal Target As Range)Dim Rs As New ADODB.RecordsetDim Query As StringDim Cnn As StringWith Application&&& .ScreenUpdating = False&&& .EnableEvents = FalseEnd WithCnn = "Driver=Microsoft Access Driver (*.mdb);DBQ=C:\*.mdb"Query = "SELECT * FROM TEXT WHERE 货号='" & Target & "'"With Rs&&& .Open Query, Cnn, adOpenStatic, adLockReadOnly&&& If .RecordCount = 0 Then&&& MsgBox "没有此货号!"&&&&&&&& Target.ClearContents&&& Else&&&&&&& Target.CopyFromRecordset Rs&&& End If&& .CloseEnd WithWith Application&&& .ScreenUpdating = True&&& .EnableEvents = TrueEnd WithEnd Sub
049.如何统计一个单元格中的数字有几位数?解答1:=LEN(单元格地址)又问:如果中间有汉字或者是字母、符号呢,或是数者都有呢?解答2:=SUM(LEN(A1)-LEN(SUBSTITUTE(A1,{"0","1","2","3","4","5","6","7","8","9"},"")))解答3:=2*LEN(A1)-LENB(A1)(备注:對 中文 + 數字 是很好的做法,但有英文字 或 中文 + 數字 + 英文 就出錯)
050.如何選取列內不重複資料解答1:Sub ff()Dim aa As New Collectioncc = 2On Error Resume NextDo Until Cells(3, cc) = ""&& aa.Add Cells(3, cc).value, Cells(3, cc).Text&& cc = cc + 1LoopOn Error GoTo 0cc = 2For Each itm In aa&& Cells(5, cc) = itm&& cc = cc + 1NextEnd Sub解答2:提供一個以陣列方法為思考模式的方法Sub ff()On Error Resume Next&& cc = 2&& Set NoDupes = CreateObject("Scripting.Dictionary")&& Do Until Cells(3, cc) = ""&&&&&&&&&& NoDupes.Add Cells(3, cc).value, Cells(3, cc).value&&&&&& cc = cc + 1&& Loop&& Range("B6").Resize(1, UBound(NoDupes.keys) + 1) = NoDupes.keys&&&&&&& '陣列由0開始,所以+1End Sub&
喜欢该文的人也喜欢

我要回帖

更多关于 最终幻想纷争012存档 的文章

 

随机推荐