按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
我的宏,请高手做答,如何隐藏起我的宏。
解答:在宏的声明前加Private。
036。请教多条件求和的问题
大家好,我是个新手,想向大家请教指定多条件求和的函数公式。
CCXXXVI
…………………………………………………………Page 237……………………………………………………………
Excel_word_ppt_使用技巧大全(完全版)
譬如,有一张工作表有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(((A1:A100)=〃a〃)*((B1:B100)=〃03。10。22〃))}
037。请教关于星期的计算?
如何通过输入一个日期:2003…10…20即可得到该天在本年度的第几个星期?
解答:使用 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
CCXXXVII
…………………………………………………………Page 238……………………………………………………………
Excel_word_ppt_使用技巧大全(完全版)
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 if
end function
public function yearstart(whichyear as integer) as date
dim weekday as integer
dim newyear as date
newyear = dateserial(whichyear; 1; 1)
weekday = (newyear 2) mod 7
if weekday 《 4 then
yearstart = newyear weekday
else
yearstart = newyear weekday + 7
end if
end function
038。请教日期的转换问题
我的程序里有这样一段代码:
Dim str As Date
str=now
Sheet1。Cells(1; 〃A〃) = str
运行后在单元格里显示
2003/11/13 15:19:45
但我想让它显示成如下的格式:
2003年11月13日(小时,分,秒去掉)
我用year (str)想单独取得年的值,但显示1905/06/25 0:00:00
请问有什么好的方法可以实现这种转换吗?
解答:
Dim str As Date
str=now
Sheet1。Cells(1; 〃A〃) = format(str;〃yyyy年mm月dd 日〃)
039。如何用vba实现删除最右边的字符
1月、2月、3月。。。。。。。。。。。10月、11月、12月
CCXXXVIII
…………………………………………………………Page 239……………………………………………………………
Excel_word_ppt_使用技巧大全(完全版)
请问如何用vba实现把“月”删除只提取:1、2、3。。。。。。。10、11、12。
解答:Sub abc()
Dim a As Integer
Dim b As String
Dim c As String
c = 〃〃
For a = 1 To Len(b)
c = c & IIf(Mid(b; a; 1) 〃月〃; Mid(b; a; 1); 〃〃)
Next
MsgBox c
End 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
CCXXXIX
…………………………………………………………Page 240……………………………………………………………
Excel_word_ppt_使用技巧大全(完全版)
Selection。Item(ir; ic) = 〃〃
Next ic
Selection。Item(ir; 1)。value = newcell
Next ir
Application。Calculation = xlCalculationAutomatic
Application。ScreenUpdating = True
End Sub
042。求教合并单元格区域的连续读取方法
求教:1、如何选定连续的合并单元格区域;2、如何连续读取合并单元格中的内容。
解答:Public Sub adre()
Dim cell As Range
Dim iRow_dn1 As Integer
iRow_dn1 = 'B65536'。End(xlUp)。Row
Set av1 = Range(〃B3:B〃 & iRow_dn1)
For Each cell In av1
If cell 〃〃 Then
MsgBox cell。Address & 〃 等於 〃 & 〃 o 〃 & cell & 〃 §〃
End If
Next
End Sub
043。求一公式
sheet1 sheet2
A B C A B C
1 产品代码产品名 生产机器名 产品代码 产品名 生产机器名
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、用一列公式填充
CCXL
…………………………………………………………Page 241……………………………………………………………
Excel_word_ppt_使用技巧大全(完全版)
=IF(LEFT(RIGHT(A1;ROW());1)=CHAR(32);RIGHT(A1;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 = lastone
End Function
方法4 、=IF(ISERROR(SEARCH(〃〃;TRIM(LEFT(B1))));RIGHT(A1;ROW());〃〃)拖出来的第一
个字符就行。
方 法 5 、 {=RIGHT(A1;LEN(A1)…MAX((MID(A1;ROW(INDIRECT(〃1:〃&LEN(A1)));1)=〃
〃)*ROW(INDIRECT(〃1:〃&LEN(