数组不填充0

所以我将10个string存储到一个数组中。 然后,我循环通过一个工作表,并添加更多的元素,从位置10(第11元素)开始数组。 工作正常。

arr = Array("Summary", "Account Summary", "Calendarization", "Vehicles", "Buildings", "Personal Comp", "Comp Equip", _ "Software", "Furn & Fixtures", "Alloc Deprec") With ThisWorkbook.Worksheets("PrintTabCheck") lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row For i = 6 To lastRow If .Cells(i, 4) <> 9999999 Then ReDim Preserve arr(UBound(arr) + 1) arr(UBound(arr)) = .Cells(i, 2).Value Debug.Print arr(UBound(arr)) End If Next End With 

但有时我没有任何东西存储到数组之前我循环,所以我想我可以开始在i-6 (位置0)填充数组,但我得到一个run time error 13 type mismatch errorarr(i-6) = .Cells(i, 2).Value ; _;

发生这种情况是因为第一个单元格触发true的行9不是6.我试图做arr(i - 6 - b) = .Cells(i, 2).Value其中b=3但仍然没有; _;

作为解决办法,我首先添加一个“虚拟”string到数组,然后如上复制。

 arr = Array("dummy") With ThisWorkbook.Worksheets("PrintTabCheck") lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row For i = 6 To lastRow If .Cells(i, 4) <> 9999999 Then ReDim Preserve arr(UBound(arr) + 1) arr(UBound(arr)) = .Cells(i, 2).Value End If Next End With 

但这是愚蠢的XD为什么我不能在位置0填充数组,而不必诉诸添加一个虚拟元素?

我把它声明为Dim arr As Variant

我希望这有帮助

 Sub arrtest() Dim arr() As String Dim t&, i&, lastrow&, firstrow& With ActiveWorkbook.Worksheets("Sheet1") lastRow = .Cells(.Rows.count, "A").End(xlUp).Row For t = 6 To lastRow If .Cells(t, 4) <> 9999999 Then firstrow = t - 6 Exit For End If Next ReDim arr(firstrow To firstrow) For i = 6 To lastRow If .Cells(i, 4) <> 9999999 Then ReDim Preserve arr(firstrow To UBound(arr) + 1) arr(UBound(arr)) = .Cells(i, 2).value End If Next For t = LBound(arr) To UBound(arr) Debug.Print arr(t) Next End With End Sub 

总和数字+0

我有一个小数目的问题。 我使用SUM函数来求和某些数字。 如果我添加一个零的范围,它不显示零。 我不知道为什么。

A1

 =SUM(B1:R1)*-1 

C1到L1

 266864 -100000 -15136.15 -23688.82 -120870 -7169 -5550 1224 -0.03 4326 

A2

 =SUM(B2:R2)*-1 

C2到M2

 =SUM(C3:C3) =SUM(D3:D3) =SUM(E3:E3) =SUM(F3:F3) =SUM(G3:G3) =SUM(H3:H3) =SUM(I3:I3) =SUM(J3:J3) =SUM(K3:K3) =SUM(L3:L3) =SUM(M3:M3) 

A3

 =SUM(B3:R3)*-1 

C3到M3

 266864 -100000 -15136.15 -23688.82 -120870 -7169 -5550 1224 -0.03 4326 0 

A1显示0,但A2和A3显示9.09E-13

数字9.09E-13是另一种称为0.000000000000909495(一种非常小的十进制数)的方法( 科学记数法 )。 您遇到的是15位精度浮点错误 。

浮点错误

通常情况下,您可以使用ROUND函数或类似的东西来删除错误(如果必须的话)。

有关详细信息,请参阅浮点算术可能会在Excel中给出不准确的结果 。

就像我想的那样,可能是A1单元格已经放置了一些不同的公式,或者A1 Cell的types是int ,Value变成了十进制或者其他的,所以请在不同的单元格中试试这个公式。

我想知道你为什么使用= SUM(C3:C3)等。也就是说,为什么在单个单元格上使用sum函数。 除非有特定的原因,否则我build议你使用= C3。 我发现在单个单元格上使用求和有时可能会返回不正确的答案。 不知道为什么,但确实如此。 因此,很久以前我不使用这个总和,除非有一个范围包括多个单元格。

子程序返回全0

我想从用户定义的函数返回值,但返回的是0。 我觉得我分配给variableswk1和wk2的值没有在函数中使用。

子程序的目标是计算工作表“价格”中提供的价格的股票每周回报。

我不太了解VBA,所以任何帮助表示赞赏

谢谢您的帮助!

Public Sub wklyrtn() Dim wk1, wk2 As Long Dim row As Long, column As Long Dim matrix1(2 To 261, 2 To 11) As Integer Sheets("Prices").Select Selection.Activate For row = 2 To 261 For column = 2 To 11 wk2 = Cells(row, column).Value wk1 = Cells(row + 1, column).Value matrix1(row, column) = Rtrn(wk1, wk2) Next column Next row Sheets("Returns").Select Selection.Activate For row = 2 To 261 For column = 2 To 11 Cells(row, column) = matrix1(row, column) Next column Next row End Sub Public Function Rtrn(wk1, wk2) Dim delt As Long Application.Volatile True delt = wk2 - wk1 Rtrn = delt / wk1 End Function 

尝试这个。 不知道你想用Matrix来做什么。 但是这会给你你需要的价值。 你需要引用一个对象(你的工作表),而不是使用select (总是避免这个问题,并试图用set来引用一个对象。

 Option Explicit Public Sub wklyrtn() Dim wk1 As Long, wk2 As Long Dim row As Long, column As Long Dim matrix1(2 To 261, 2 To 11) As variant Dim wks As Worksheet, wks2 As Worksheet Set wks = ThisWorkbook.Sheets("Prices") With wks For row = 2 To 261 For column = 2 To 11 wk2 = wks.Cells(row, column).Value wk1 = wks.Cells(row + 1, column).Value matrix1(row, column) = Rtrn(wk1, wk2) Next column Next row End With Set wks2 = ThisWorkbook.Sheets("Returns") With wks2 For row = 2 To 261 For column = 2 To 11 wks2.Cells(row, column) = matrix1(row, column) Next column Next row End With End Sub 
 Public Sub Get_Price_Index_Var() Dim lRow As Long, bCol As Byte 'Avoid naming varaibles same as VBA objects, properties, etc Dim vResults(2 To 261, 2 To 11) As Variant 'Using variant datatype gives flexibility to hold the result of the operations perform Dim aResults As Variant 'Used get resulting array to be enter in Returns Worksheet Dim vVal1 As Variant, vVal2 As Variant With ThisWorkbook.Sheets("Prices") For lRow = 2 To 261 For bCol = 2 To 11 vVal1 = .Cells(lRow, bCol).Value vVal2 = .Cells(1 + lRow, bCol).Value vResults(lRow, bCol) = fReturns(vVal1, vVal2) Next: Next: End With aResults = WorksheetFunction.Index(vResults, 0, 0) With ThisWorkbook.Sheets("Returns") .Cells(2, 2).Resize(UBound(aResults), UBound(aResults, 2)).Value = aResults End With End Sub Public Function fReturns(vVal1 As Variant, vVal2 As Variant) As Variant fReturns = (vVal2 - vVal1) / vVal1 End Function 

除了使用variablesvariables(就像你已经被告知的那样)之外,你可以利用数组来加快macros的执行并缩短你的代码:

 Option Explicit Public Sub wklyrtn() Const ROWMIN As Long = 2 Const ROWMAX As Long = 261 Const COLMIN As Long = 2 Const COLMAX As Long = 11 Dim row As Long, column As Long Dim data As Variant, matrix1 As Variant With Sheets("Prices") data = .Range(.Cells(ROWMIN, COLMIN), .Cells(ROWMAX + 1, COLMAX)).Value '<--| read all needed values into 'data' array (it needs one row more at the bottom) End With ReDim matrix1(1 To ROWMAX - ROWMIN + 1, 1 To COLMAX - COLMIN + 1) As Double '<--| size returned valuse array accordingly to chosen rows and column indexes ranges For row = 1 To ROWMAX - ROWMIN + 1 For column = 1 To COLMAX - COLMIN + 1 matrix1(row, column) = Rtrn(data(row + 1, column), data(row, column)) '<-- store returned values into 'matrix1' array Next column Next row Sheets("Returns").Cells(2, 2).Resize(ROWMAX - ROWMIN + 1, COLMAX - COLMIN + 1 + 1).Value = matrix1 '<--| write returned values from 'matrix1' array into cells End Sub Public Function Rtrn(wk1, wk2) Dim delt As Long Application.Volatile True delt = wk2 - wk1 Rtrn = delt / wk1 End Function 

如何给一个单元格添加一定数量的0?

我需要一个单元格为10个字符长,并填写0开头的数字,使其10个字符。

例如:单元格A1是1990,我需要它是0000001990.单元格B2是82.我需要它是0000000082。

该单元可以是任何数字的范围。

我怎么去做这个?

我想你正在寻找TEXT函数,如下所示:

=文本(A1, “0000000000”)

如何从最后一个单元格取第二个不等于0,并返回标题值

excel公式:

LOOKUP(2,1 /(G698:AW698 <> 0),G3:AW3)

在find不是0的行中的最后一个单元格并且返回它的标题值时完美地工作。

我如何应用相同的理论来寻找非零单元格的第二个,然后是第三个最后一个值?

您将需要切换到INDEX / AGGREGATE

=INDEX($3:$3,AGGREGATE(14,6,COLUMN(G698:AW698)/((G698:AW698<>0)*(G698:AW698<>"")),2)) 

2最后是倒数第二。

2最后更改为3以获得第三个,依此类推。

从一个工作簿复制/粘贴到另一个正在返回0而不是实际值

我的代码在需要时激活正确的工作簿,但只返回值为0,而不是返回数字和date的实际值。 数据传输完成后,我还需要closuresDailyPerformance工作簿。

Private Sub CommandButton2_Click() TrackingReport = ActiveWorkbook.Name Dim xDate As Double Dim ACD As Double Dim Untouched As Double Dim DailyAct As Double Dim SchedAdherence As Double Dim Status As Double Dim RowCount As Long Dim DailyPerformance As Excel.Workbook Set DailyPerformance = Workbooks.Open("P:\DX\Daily Team Performance\Dignositc Team's Daily Performance Tracker (001).xlsx", Password:="dailyp123") Worksheets("1359 Report").Select xDate = Range("L2").Value Worksheets("Matt's Tab Two").Select ACD = Range("C4").Value Worksheets("Matt's Tab Two").Select DailyAct = Range("E4").Value Worksheets("Matt's Tab Two").Select SchedAdherence = Range("F4").Value Worksheets("1359 Report Summary").Select Status = Range("B5").Value Workbooks(TrackingReport).Activate Set TrackinReport = ActiveWorkbook Worksheets("Data").Select Worksheets("Data").Range("B1").Select RowCount = Worksheets("Data").Range("B1").CurrentRegion.Rows.Count With Worksheets("Data").Range("B1") .Offset(RowCount, 0) = xDate .Offset(RowCount, 1) = ACD .Offset(RowCount, 2) = DailyAct .Offset(RowCount, 3) = SchedAdherence .Offset(RowCount, 4) = Status End With Workbooks(TrackingReport).Save End Sub 

尝试避免使用select和ActiveWorkbook ,而不是使用ThisWorkbookActiveWorkbook是一个“在上面”。 ThisWorkbook是执行vba代码的地方。

由于我没有数据来testing这个,我假设你的引用是正确的。 例如,你真的希望xDate为Double (像x,xx这样的数字)而不是像Date一样? 与状态相同。 你可以稍后检查一下。

如果您对代码有任何疑问,请询问。

 Private Sub CommandButton2_Click() Dim xDate As Double Dim ACD As Double Dim Untouched As Double Dim DailyAct As Double Dim SchedAdherence As Double Dim Status As Double Dim RowCount As Long Dim DailyPerformance As Excel.Workbook Dim TWb As Workbook Set TWb = ThisWorkbook Set DailyPerformance = Workbooks.Open("P:\DX\Daily Team Performance\Dignositc Team's Daily Performance Tracker (001).xlsx", Password:="dailyp123") xDate = DailyPerformance.Worksheets("1359 Report").Range("L2").Value ACD = DailyPerformance.Worksheets("Matt's Tab Two").Range("C4").Value DailyAct = DailyPerformance.Worksheets("Matt's Tab Two").Range("E4").Value SchedAdherence = DailyPerformance.Worksheets("Matt's Tab Two").Range("F4").Value Status = DailyPerformance.Worksheets("1359 Report Summary").Range("B5").Value RowCount = TWb.Worksheets("Data").Cells(Rows.Count,2).End(xlUp).Row With TWb.Worksheets("Data").Range("B1") .Offset(RowCount, 0) = xDate .Offset(RowCount, 1) = ACD .Offset(RowCount, 2) = DailyAct .Offset(RowCount, 3) = SchedAdherence .Offset(RowCount, 4) = Status End With TWb.Save DailyPerformance.Close End Sub 

另一个版本

 Private Sub CommandButton2_Click() Dim xlApp Dim DailyPerformance Dim xDate As String Dim ACD As String Dim Untouched As String Dim DailyAct As String Dim SchedAdherence As String Dim Status As String Dim RowCount As Integer Dim TrackingReport as Workbook TrackingReport = ThisWorkbook Set xlApp = CreateObject("Excel.Application") xlApp.Visible = True ' if you want it to be visible Set DailyPerformance = xlApp.Workbooks.Open("P:\DX\Daily Team Performance\Dignositc Team's Daily Performance Tracker (001).xlsx", Password:="dailyp123") DailyPerformance.Activate xDate = DailyPerformance.Worksheets("1359 Report").Range("L2").Value ACD = DailyPerformance.Worksheets("Matt's Tab Two").Range("C4").Value DailyAct = DailyPerformance.Worksheets("Matt's Tab Two").Range("E4").Value SchedAdherence = DailyPerformance.Worksheets("Matt's Tab Two").Range("F4").Value Status = DailyPerformance.Worksheets("1359 Report Summary").Range("B5").Value TrackingReport.Activate RowCount = TrackingReport.Worksheets("Data").Range("B1").CurrentRegion.Rows.Count With TrackingReport.Worksheets("Data").Range("B1") .Offset(RowCount, 0) = xDate .Offset(RowCount, 1) = ACD .Offset(RowCount, 2) = DailyAct .Offset(RowCount, 3) = SchedAdherence .Offset(RowCount, 4) = Status End With TrackingReport.save DailyPerformance.close SaveChanges:=False End Sub 

尝试将您的声明从Double更改为String 。 你也不必做很多select。

尝试这个…

 Private Sub CommandButton2_Click() TrackingReport = ActiveWorkbook.Name Dim xDate As String Dim ACD As String Dim Untouched As String Dim DailyAct As String Dim SchedAdherence As String Dim Status As String Dim RowCount As Integer Dim DailyPerformance As Excel.Workbook Set DailyPerformance = Workbooks.Open("P:\DX\Daily Team Performance\Dignositc Team's Daily Performance Tracker (001).xlsx", Password:="dailyp123") xDate = Worksheets("1359 Report").Range("L2").Value ACD = Worksheets("Matt's Tab Two").Range("C4").Value DailyAct = Worksheets("Matt's Tab Two").Range("E4").Value SchedAdherence = Worksheets("Matt's Tab Two").Range("F4").Value Status = Worksheets("1359 Report Summary").Range("B5").Value Workbooks(TrackingReport).Activate Set TrackinReport = ActiveWorkbook RowCount = Worksheets("Data").Range("B1").CurrentRegion.Rows.Count With Worksheets("Data").Range("B1") .Offset(RowCount, 0) = xDate .Offset(RowCount, 1) = ACD .Offset(RowCount, 2) = DailyAct .Offset(RowCount, 3) = SchedAdherence .Offset(RowCount, 4) = Status End With Workbooks(TrackingReport).Save End Sub 

使用不同的数组方法,编辑Moacir代码。 以上代码是好的。 只授予此代码。

 Private Sub CommandButton2_Click() Dim DailyPerformance As Workbook Dim TWb As Workbook Dim vR(1 To 5) As Variant '<~~ variant array Set TWb = ThisWorkbook Set DailyPerformance = Workbooks.Open("P:\DX\Daily Team Performance\Dignositc Team's Daily Performance Tracker (001).xlsx", Password:="dailyp123") With DailyPerformance vR(1) = .Worksheets("1359 Report").Range("L2").Value vR(2) = .Worksheets("Matt's Tab Two").Range("C4").Value vR(3) = .Worksheets("Matt's Tab Two").Range("E4").Value vR(4) = DailyPerformance.Worksheets("Matt's Tab Two").Range("F4").Value vR(5) = DailyPerformance.Worksheets("1359 Report Summary").Range("B5").Value RowCount = TWb.Worksheets("Data").Cells(Rows.Count, 2).End(xlUp).Row + 1 TWb.Worksheets("Data").Range("B" & RowCount).Resize(1, 5) = vR TWb.Save DailyPerformance.Close (0) End Sub 

获取行的最大值或最小值,但忽略空白列或0

在Excel中,我们可以find最大值。 和分钟。 通过忽略像这张图片那样的空白栏的行的值

在这里输入图像说明

在mysql数据库中,我有一个3字段的表,每个字段的数据types是浮动的。 通过使用最大和最小的function,我打算find最大。 和分钟。 每行的值。 但结果是

在这里输入图像说明

在excel和mysql中的结果是不同的,因为在excel中我们可以清空列,但是在mysql(使用float数据types)时,空列将变为0。

如果该列包含NULL,则结果如下

在这里输入图像说明

问题:有没有办法使mysql中的0或NULL值读为空列?

也许你可以用ifnull来代替低或高的值

 drop table if exists t; Create table t (a float, b float, c float); insert into t (b,c) values (1,2); select greatest(ifnull(a,0),ifnull(b,0),ifnull(c,0)) maxi, least(ifnull(a,999999),ifnull(b,999999),ifnull(c,999999)) mini from t; 

结果

 +------+------+ | maxi | mini | +------+------+ | 2 | 1 | +------+------+ 1 row in set (0.00 sec) 

如何从单元格中减去它们的值0并移动到下一行?

如何从单元格中减去值而不使它们变为负值?

例如。

我有一个100连续的单元格。 而另一个在下一行200。

我使用CommandButton从这些行中减去105。 但是,我想使用FIFO(先进先出)原理,先从100减去100,直到到达0,然后从200减去。

这是我迄今为止。

Private Sub CommandButton1_Click() 'Guardar Carbonação Dim LastRow As Long, CR As Long, ws As Worksheet, CR2 As Long, ws2 As Worksheet, ws3 As Worksheet Set ws = Sheets("Carbonação") Set ws3 = Sheets("STOCK Sticks") LastRow = ws.Range("A" & Rows.Count).End(xlUp).Row + 1 CR = ws3.Range("A" & Rows.Count).End(xlUp).Row ws.Range("A" & LastRow).Value = Int((99999999 - 1 + 1) * Rnd + 8) 'ID Carbonação ws.Range("B" & LastRow).Value = ComboBox1.Text 'Fabricante ws.Range("C" & LastRow).Value = TextBox25.Text 'Lote Membranas ws.Range("D" & LastRow).Value = Sheets("STOCK Sticks").Range("A" & CR) 'ID Sticks ws.Range("E" & LastRow).Value = TextBox2.Text 'Nº Carbonação ws.Range("F" & LastRow).Value = TextBox3.Text 'Densidade Total / Carbonação ws.Range("G" & LastRow).Value = TextBox1.Text 'TETRA ws.Range("H" & LastRow).Value = Format(Now(), "dd/mm/yyyy hh:mm") 'Data / Hora introdução Set ws2 = Sheets("STOCK Membranas") CR2 = ws2.Range("A" & Rows.Count).End(xlUp).Row - 1 If ws2.Range("H" & CR2).Value = 0 Then CR2 = ws2.Range("A" & Rows.Count).End(xlUp).Row ws2.Range("H" & CR2).Value = ws2.Range("H" & CR2) - 4 ElseIf ws2.Range("H" & CR2).Value > 0 Then CR2 = ws2.Range("A" & Rows.Count).End(xlUp).Row - 1 ws2.Range("H" & CR2).Value = ws2.Range("H" & CR2) - 4 End If ComboBox1.Value = Null TextBox25.Value = Null TextBox1.Value = Null TextBox2.Value = Null TextBox3.Value = Null End Sub 

只要你有这样的问题,从最小的例子开始,并使其工作。 例如,这样的事情:

在这里输入图像说明

现在我们的想法是从A1的单元格中减去一个值(比方说320 ),然后从B1减去其余的值。最后,你应该有这样的东西:

在这里输入图像说明

现在有趣的部分工作,直到你没有从图片1实现图2。最简单的可能的select是使用substractValuevariables,并减less单元格的值。 一旦substractValue变为0,退出for循环:

 Option Explicit Public Sub SubstractMe() Dim substractValue As Double Dim myCell As Range Range("A1") = 100 Range("A2") = 200 Range("A3") = 300 Range("A4") = 400 substractValue = 320 For Each myCell In Range("A1:A4") If myCell - substractValue < 0 And substractValue > 0 Then substractValue = substractValue - myCell myCell = 0 Else myCell = myCell - substractValue Exit For End If Next myCell End Sub 

什么公式来调整一个数字,所以一个给定的单元格总是> 0?

我正在使用相当简单的公式在谷歌电子表格上工作。

在这里输入图像说明

我试图让“Q出售”自动计算,使“平等”总是真实的。 目标是让工作表find我需要出售的最小数量来支付费用。 平等的公式是总支出。

另外一个问题是find一个保持X真的数字的公式是什么?

将公式=上限(F2 / B2)放入Q to Sell列中? (其中F2是“费用”下的第一个单元格,而B2是“卖出P”下的第一个单元格)

这只是计算费用除以销售Pfind你需要出售的数量。 这将等于一个小数,所以我们使用=ceiling()函数将其四舍五入到最接近的整数。

尝试使用CEILINGfunction:

在这里输入图像说明

当数值为0或公式中不存在时,如何将单元格留空

如何告诉macros使单元格保持空白,如果单元格的值为0或不存在,则不放置零。 在其他types的公式中,我最后添加了“” – “”)“,但在这种情况下,它不起作用…

.Range("Z" & i & ":AB" & i).Formula = "=SUMIF($D$2:$D$" & lastrow & ",$Y" & i & ",E$2:E$" & lastrow & ")/" & dic(.Range("Y" & i).Value) 

这是一个工作场合的例子

 .Range("AD" & i).Formula = "=IF(INDEX($I$2:$I$" & lastrow & ",MATCH($Y" & i & ",$D$2:$D$" & lastrow & ",0))=0,Z" & i & ",""-"")" 

在不起作用的示例中,您的公式不包含与您的工作公式示例相同的条件。

你的第二个公式本质上是“如果这个值是0,那么做X”。 您的第一个公式只有SUMIF公式,它不评估返回的值是否为0。

您应该将相同的逻辑添加到您的SUMIF公式,以获得相同的结果。 具体来说,你需要给这个“IF”公式。 这里有一个我没有testing过的例子,但应该或多或less准确。

 .Range("Z" & i & ":AB" & i).Formula = "=if(SUMIF($D$2:$D$" & lastRow & ",$Y" & i & ",E$2:E$" & lastRow & ")/" & dic(.Range("Y" & i).Value) & "=0,""""," & "SUMIF($D$2:$D$" & lastRow & ",$Y" & i & ",E$2:E$" & lastRow & ")/" & dic(.Range("Y" & i).Value) & ")" 

这将build立检查0的公式 。 如果你想VBA检查0,这将是一个不同的解决scheme。

更新您的评论:

我想这就是你要找的东西,不过我认为你的公式有一个错误。

 "=IF($Z$2:$Z$" & lastRow & "*$AC$2:$AC" & lastRow & "=0,""-""," & "$Z$2:$Z$" & lastRow & "*$AC$2:$AC" & lastRow & ")" 

有太多的信息想我想,但如果我明白你想使用VBA添加一个内置的函数到你的单元格( SUMIF ),但是你希望这个SUMIF返回""而不是0 (这是正常的返回types,因为函数应该返回一个数字),那么你可以做的是build立一个嵌套的函数,说如果你的函数的结果不是零,那么你写这个结果,否则你写“”:

 .Range("Z" & i & ":AB" & i).Formula = "=IF(SUMIF($D$2:$D$" & lastrow & ",$Y" & i & ",E$2:E$" & lastrow & ")/" & dic(.Range("Y" & i).Value) & "<> 0, SUMIF($D$2:$D$" & lastrow & ",$Y" & i & ",E$2:E$" & lastrow & ")/" & dic(.Range("Y" & i).Value), "") 

…但如果你给我们更多的信息,可能有更好的方法来获得结果(可能是一个用户函数,而不是内置的SUMIF直接放在单元格中)。

添加0在一个单元格的中间?

我知道热添加领先的0,但我想知道是否可以将它们添加到一个单元格的中间= 12个字符。 前两个字符总是会成为字母。 然后nummbers。

AB45686 = AB0000045686 DS456 = DS0000000456 

使用LEFT和MIDparsingstring,然后使用文本添加所需的0:

 =LEFT(A1,2) & TEXT(--MID(A1,3,LEN(A1)),"0000000000") 

在这里输入图像说明

这是获得结果的另一种方式。 在这里输入图像说明

如果大于0,则平均数字列表

如何平均值大于0的数字列表? 我知道我可以在Excel中使用AVERAGEIF函数

我的数据位于A2,A5,A6,A10,A17。

如果数据大于0,我只想对它进行平均。

由于我的数据不是一个范围,我不能使用AVERAGEIFfunction范围。

需要一些帮助。

编辑

例如,

我尝试了三个数字:

1) 98.068 and 98.954 and 0 so my forumla looked like this: =AVERAGE(IF(N(OFFSET(A2,{0,5,10},))>0,N(OFFSET(A2,{0,5,10},)))) 

答案是99.106。 不知道为什么。

几个选项:

1) =SUM(SUMIF(INDIRECT({"A2","A5","A6","A10","A17"}),">0"))/SUM(COUNTIF(INDIRECT({"A2","A5","A6","A10","A17"}),">0"))

2) =AVERAGE(IF(N(INDIRECT({"A2","A5","A6","A10","A17"}))>0,N(INDIRECT({"A2","A5","A6","A10","A17"}))))

3) =AVERAGE(IF(N(OFFSET(A2,{0,3,4,8,15},))>0,N(OFFSET(A2,{0,3,4,8,15},))))

2)和3)必须作为数组公式提交**

问候

(0)一个简单的方法

 =SUM(A2*(A2>0),A5*(A5>0),A6*(A6>0),A10*(A10>0),A17*(A17>0))/SUM(A2>0,A5>0,A6>0,A10>0,A17>0) 

(4)更一般的方法

 =SUM((A1:A20>0)*A1:A20*(ADDRESS(ROW(A1:A20),1,4)={"A2","A5","A6","A10","A17"}))/ SUM((A1:A20>0)*(ADDRESS(ROW(A1:A20),1,4)={"A2","A5","A6","A10","A17"})) 

第二个是数组公式,并且必须用Ctrl Shift Enterinput

如果可以在单元格中显示文本而不是数字,则应该replace第一个公式:

 =SUM(N(A2)*(A2>0),N(A5)*(A5>0),N(A6)*(A6>0),N(A10)*(A10>0),N(A17)*(A17>0))/SUM(N(A2)>0,N(A5)>0,N(A6)>0,N(A10)>0,N(A17)>0) 

(我在分子的>括号里没有使用N,因为我认为如果A2是文本,产品将始终是零)

我无法说服N在第二个公式中使用数组,所以目前我有相当长的时间

 =SUM((IF(ISNUMBER(A1:A20),A1:A20,0)>0)*IF(ISNUMBER(A1:A20),A1:A20,0)*(ADDRESS(ROW(A1:A20),1,4)={"A2","A5","A6","A10","A17"}))/ SUM((IF(ISNUMBER(A1:A20),A1:A20,0)>0)*(ADDRESS(ROW(A1:A20),1,4)={"A2","A5","A6","A10","A17"})) 

但我已经testing了它的文本值和负数,它似乎很好。

唯一的例外是如果其中一个单元格包含TRUE。 在这种情况下,第一个公式将计算为1,第二个公式将忽略它。

如果是“0”,则删除第一个字符(零)

我无法得到正确的公式,以删除列中的前导零。 我build立了以下,但它返回FALSE而不是零值:

 =IF(RIGHT(Z2:Z19497,LEN(Z2:Z19497)-1)="0",MID(Z2:Z19497,2,LEN(Z2:Z19497))) 

希望你能帮忙。

假设你的数据是Z2到Z19497,你需要在AA2单元格中input下面的公式,然后从AA2到AA19497中select,然后按Fill> Down(或按Ctrl + D ):

 =IF(LEFT(Z2,1)="0",MID(Z2,2,LEN(Z2)-1),Z2) 

注意:正如在注释中所讨论的那样, LEN之后的-1不是必须的,因为即使指定的长度大于剩余字符的数量, MID也可以正常工作。 为了进一步减lessinput,可以使用999 (或者安全地超过最长单元格的数字)而不是LEN(Z2)-1

你尝试的公式有几个问题:

  1. 这种公式只适用于一个单元格,但是包含整个范围( Z2:Z19497 )而不是一个单元格( Z2 )。
  2. 您的IF语句具有“if true”部分( MID(Z2:Z19497,2,LEN(Z2:Z19497)) ),但不包含“if false”部分。 这就是为什么你最终以FALSE而不是Z2中的值。
  3. 对于testing条件,使用LEFTRIGHT更容易。

请注意,当您复制公式时, Z2会自动前进到Z3Z4

你的公式有几个问题。

首先,您正试图将公式应用于单元格Z2:Z19497的范围。 相反,您需要分别评估每个单元格,检查Z2是否以零开始, Z3是否以零开始,依此类推。 如果您将公式添加到单元格AA2某个位置,然后将其填充到AA19497 ,那么您将在列AA中具有不包含前导零的值列表。

下一个问题在你的IFtesting陈述中。 如果我们修改公式来查看一个单元格,它看起来像这样: RIGHT(Z2,LEN(Z2)-1)="0" 。 这个公式说,告诉我,如果除了单元格Z2的第一个字符之外的其他东西都等于0,请看这个问题吗? 唯一的时候它会返回一个真正的是当你有一个两位数字的单元格Z2结尾为0.否则,你正在testing多字符值是否等于0,这是不可能的。

相反,让我们检查第一个字符是否等于0.为此,我们使用LEFT函数来获取第一个字符。 LEFT(Z2,1)="0"太好了,现在我们知道第一个字符是否为0。

所以我们假设第一个字符是0.我们要删除它,但我们将如何做到这一点? 您当前的逻辑的单个单元版本是MID(Z2,2,LEN(Z2)) ,应该可以工作,但稍微不正确。 为了完整起见,我们来修复它。 既然你正在删除单元格Z2的第一个字符,你不再需要MID使用Z2的长度,你希望它使用Z2的长度减1.让我们把你的公式的这一部分改写为MID(Z2,2,LEN(Z2)-1)

现在到Z2中的单元格不以0开始的情况。如果是这种情况,则希望公式只返回该值。 我们可以通过简单地在公式的指令之后加上一个逗号,当数字从0开始并插入一个Z2 。 这听起来有点令人困惑,但应该在下面的完整公式中有意义:

=IF(LEFT(A1,1)="0",MID(A1,2,LEN(A1)-1),A1)

一旦input一个单元格,大概AA2 ,你应该能够单击该单元格右下angular的小方块,使其填充公式的列到数据的结尾,大概AA19497

如果Z列中的所有值都是以零为前缀的数字,另一个选项是在另一个单元格中input公式=Z2*1=Z2/1 ,如果我们遵循与其余部分相同的模式这个回应。 这会给你新的列中Z的数值,并且更容易记住和键入。 不幸的是,如果您的Z列中的值与数字混合在一起,则不起作用。

如果显示消息框并取消保存,则检查单元格= 0

我遇到了一些VBA代码的问题,这些代码看起来很基本,但还没有正常工作。 我是VBA的新手,所以我错过了一些东西。

代码应该检查一个单元格(XFD3002),看看它是否等于0,如果它显示一条消息,并停止保存文件。 对于后台,有一个检查,看看某些单元格填充,如果没有,它将返回一个0。

代码是:

Private Sub Check_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim check As Integer check = Sheets("Data").Range("XFD3002").Value If check = 0 Then MsgBox ("You have missed one or more required field") Cancel = True End If End Sub 

任何人都可以看到上面的错误吗?

子名称应该是Workbook_BeforeSave

最难find的错误总是最简单的。 :d

你会看到check单元格中的内容是否是一个string,因为你已经在其周围加了引号 – “0”,但是check已经被声明为一个整数。 尝试将其更改为不带引号的0。

编辑:请确保此代码出现在“TheWorkbook”模块中,并将名称更改为Workbook_BeforeSave(由@Pierre指出)

添加0的可变数字

我有一组使用以下命名约定的位置:

  • KP 0.18 CP 02
  • KP 100.33 CP 06
  • KP 72.93 CP 09

我想要改变所有的KP值,以便在小数点前有3位数字,例如:

  • KP 000.18 CP 02
  • KP 100.33 CP 06
  • KP 072.93 CP 09

任何人都可以想办法做到这一点,不涉及10嵌套替代function?

如果您的string在A1:A3 ,请在B1input并复制下来:

 =LEFT(A1,3) & REPT("0",7 - FIND(".",A1)) & RIGHT(A1,LEN(A1)- 3) 

在这里输入图像说明

尝试,

 =TRIM(LEFT(SUBSTITUTE(A1," ",REPT(" ",LEN(A1))),LEN(A1))&TEXT(VALUE(MID(SUBSTITUTE(A1," ",REPT(" ",LEN(A1))),LEN(A1),LEN(A1)))," 000.0# ")&MID(SUBSTITUTE(A1," ",REPT(" ",LEN(A1))),LEN(A1)*2,LEN(A1))&MID(SUBSTITUTE(A1," ",REPT(" ",LEN(A1))),LEN(A1)*3,LEN(A1))) 

在这里输入图像说明

删除单元格内容如果“0”

我正在尝试制作一个包含大量数据的电子表格,并且为不同的人提供了许多(11)个相同概念的标签。

但是,如果没有任何内容显示,我不希望单元格包含“0”。 我曾尝试使用=如果但我99.99%确定我做错了,这使得它不工作…我附上一张照片,显示我有什么。 简单地说,我需要P6中的单元格B6:K6的总和

另外,由于我有11个概念大致相同的标签,所以我可以肯定地说它正在大大减缓。 任何build议或将谷歌表可能更适合?

谢谢! 在这里输入图像说明

几种方法:

 =IF(SUM(B6,K6)=0,"",SUM(B6,K6)) 

或者你可以在单元格上使用自定义格式,例如:

 0.00;-0.00; 

第二点之后的第三点 告诉excel如何显示0 。 在这种情况下,它什么都不会显示。

你可以做一些事情,如=IF(A1+B1=0,"",A1+B1)

或者,您可以取消选中“显示此工作表的显示选项”下的“在具有零值的单元格中显示零”选项。

我如何摆脱我的公式结果中的0(零)

我在U,X,AA,AD,AG,AJ和V,Y,AB,AE,AH和AK的名字列有date。 我有以下公式来select最新的更新,因为它们被更新。 列U和V将首先填充,然后列X和Y在以后更新。 我需要在另一个工作表中的单元格更新之前填充date和名称列。

这是我正在使用的公式,这是很长的,但我不能制定如何缩短。 对于这个date,我在公式的后半部分交换date列(U,X,AA,AD,AG和AJ)

=CHOOSE(1+COUNT('Training Schedule'!U42,'Training Schedule'!V42,'Training Schedule'!X42,'Training Schedule'!Y42,'Training Schedule'!AA42,'Training Schedule'!AB42,'Training Schedule'!AD42,'Training Schedule'!AE42,'Training Schedule'!AG42,'Training Schedule'!AH42,'Training Schedule'!AJ42,'Training Schedule'!AK42),"",'Training Schedule'!V42,'Training Schedule'!Y42,'Training Schedule'!AB42,'Training Schedule'!AE42,'Training Schedule'!AH42,'Training Schedule'!AK42) 

此公式有效,但如果在名称列中没有input,则将0(零)复制到名称列中。 我如何得到它显示一个空白单元格? 如果我添加一个名字,但没有date,则不会复制任何内容。 我有另一个公式计算date和名称公式复制到另一个工作表,但它正在计数0,如果单元格,如果填充。 我已经做了很多版本的文件,我错误地删除了我以前没有使用0的文件,我不记得我是怎么做的!

如果你没有W42,Z42,AC42,AF42和AI42的数字,我会build议下面的替代公式。

 =IFERROR(IF(LEN(INDEX(V42:AK42, MATCH(1E+99, U42:AJ42))), INDEX(V42:AK42, MATCH(1E+99, U42:AJ42)), ""), "") 

上面的中间单元格可以包含文本,但此方法查找该单元格的最后一个数字(又名date),以便中间单元格不能包含数字或date,如果U42,X42,AA42,AD42,AG42&AJ42中的最后一个date是要正确确定的。

无法将滑块控件的值更改为0

所以我有一个表单上有一些滑块,以及一些相应的checkbox,禁用或启用每个滑块。 当我禁用一个滑块,我想改变它的值为0,但它拒绝合作,不会改变的价值。 令人沮丧的是,只要我将价值设定为0以外的东西,它就会改变。

我debugging了它,观察滑块的Value属性更改为大于0的值,validationsliders数组中的控件是否与我期望的控件相对应,validationMin属性为0,甚至将其更改为一个荒谬的低这个数字并不包括在内,所以我无法想象它为什么会这样做。

这实际上并不是非常重要,因为滑动条的值在被禁用时不计算在内,但是它让我不知所措,所以我希望能够对此有所了解。

 Private Sub UpdateSliderComponents(i As Integer) Dim enable As Boolean enable = Not daysOff(i).Value If Not enable Then sliders(i).Value = 0 End If labels(i).Enabled = enable sliders(i).Enabled = enable End Sub 

我只是尝试了一个简单的表单来重现你的情况。 但它不一样,控制工作正常。

另外请注意,Min和Max并不是真正的你所想的0和100.这是值的范围。 价值是另一个财产。 我可以将Min设置为150,将Max设置为300.现在,值150代表滑块的零点 (0%),在这种情况下代表所谓的100%。 如果将Min设置为150,然后尝试将该值设置为0,则会导致错误。 ( 运行时错误380,无法设置值属性。无效的属性值。

在这里输入图像说明

 Option Explicit Public Sub Respond(ByRef i As Integer) Dim enable As Boolean Select Case i Case 0 enable = False Case 1 enable = True End Select If Not enable Then ScrollBar1.Value = 150 '--represents zero % ScrollBar1.BackColor = &H8000000F Else ScrollBar1.Value = 250 '--represent some value in the range ScrollBar1.BackColor = &H80FF80 End If Debug.Print ScrollBar1.Value ScrollBar1.Enabled = enable End Sub 

勾选并幻灯片到250(一些价值):

在这里输入图像说明

Untick和幻灯片150(零):

在这里输入图像说明

从不包含帮助器列的数据透视表中排除具有0值的行

我有以下Excel电子表格:

ABC Quantity Sales Price 1 Product A 500 0 2 Product A 0 5.95 3 Product A 600 19.95 4 Product B 250 0 5 Product B 0 44.99 6 Product C 700 29.99 

列A中,您可以看到列表中可能出现多次的不同产品。 在B栏C栏你可以看到他们的数量和销售价格。 也可以有值为0的单元格。

现在我基于这个数据创build了一个简单的数据透视表 ,它给了我以下结果:

  Count of Quantity Product A 3 Product B 2 Product C 1 

正如你所看到的,包含0值的行也在计数中。 由于我想排除他们,我用以下公式在原始数据中插入一个“助手列”:

 =IF(OR(B2=0,C2=0),"=0","<>0") 

这个“帮助列”我用作数据透视表中的报表filter

那么,该解决scheme到目前为止工作,但也有一种方法来避免“帮助列”,并直接在数据透视表中做“排除0函数”?

是。

将数量和销售价格添加到您的数据透视报告filter面板。

在筛选器中,select全部,然后从两者中删除0。

右键单击每个filter并select“字段设置”,然后勾选“在手动filter中包含新项目”。

如何计算值大于0的数据透视表的行数

我有一个SQL视图返回包含几个“值”列的行。 为了简单起见,我们称之为“ AmountA ,“ AmountB和“ AmountC

我在Excel中使用数据透视表来为这些数据创build一个报告。 数据透视表的源范围通常使用.Netreflection生成,然后使用Excel Interop推送到Excel。 透视表也是使用Excel Interopdynamic生成/configuration的。

我需要计算并显示一个字段,它将计算AmountA大于0的行数。对于AmountBAmountC我也需要做相同的AmountC 。 结果应按照以下顺序显示在数据透视表中同一行级别上: AmountACountAAmountBCountBAmountCCountC 。 为了更好地理解我想要完成什么,请考虑一个由count概括的数据透视表字段,但是其行为类似于COUNTIF函数。 例如,如果组ProductX有10行,只有8行的AmountA大于0,则应显示CountA为8。

我已经尝试添加公式=IF(AmountA>0,1,0)的计算字段,然后求和该字段,但似乎该公式应用于分组值,而不是每个行的实际AmountA 。 例如,如果组ProductXSum of AmountA大于0,即使AmountA大于0的行的实际计数为8,它也将显示1的计数( Sum of AmountA > 0的Sum of AmountA )。

我还考虑在源范围中添加使用类似于=IF(AmountA>0,1,0)公式的新列,然后在数据透视表中将它们包括在内。 不过,我想避免这种情况,因为我一般会生成源范围,并且调整这将需要大量的重构。

我曾想过在视图中添加额外的列来表示计数,但我认为视图不应该负责呈现数据。 这将是报告的工作。 另外,我不能看到一个CountA列如何与每一行相关,因为它有或没有一个大于0的AmountA

那么,是否有可能在数据透视表字段中重现COUNTIF行为,还是应该考虑在别处处理计数?

考虑以下数据示例:

 AmountA AmountB AmountC 2 1 2 0 0 0 3 5 1 4 0 2 5 0 0 0 6 2 2 0 0 

您可以使用数据透视表工具“组”将聚合值等于1或更高(即将它们与等于零的值分开)。

组:

  1. “从…开始”= 1,
  2. “结尾”=一些大数字(下面的例子中放100)
  3. “By”=与上一步相同的大数字。

唯一的问题是您需要为每个variables(A,B和C)创build一个数据透视表。

看到下面的截图,更好的理解:

在这里输入图像说明

如果你隐藏D,E,H和I列,看起来你有期望的输出。

我终于辞去了新的列入侵定义类似于=IF(AmountA>0,1,0)公式的源范围,然后在数据透视表中使用这些列与计数摘要。

一个数组(0)给了我一个超出指定范围的值

我试图分配一些值给VBA中的数组,问题是,当我尝试打印每个数组的值时,我得到一个比预期更多的值,因为第一个值分配给头。

我有这样的价值观:

  1. A3 – 类别 (标题)
  2. A4 – 全球
  3. A5 – KAM
  4. A6 – 推销员
  5. A7 – 外部
  6. A8 – pipe理员

这是我的代码:

Function xyz() Dim Category as Variant Set Category = Sheets("Reports").Range("A4:A8") End Function 

我得到的价值是:

 MsgBox Category(0) =Category MsgBox Category(1) =Global MsgBox Category(2) =KAM MsgBox Category(3) =Salesman MsgBox Category(4) =External MsgBox Category(5) =Admin 

据我所知,一个数组的选项基础默认设置为'0',为什么类(0)值考虑“A3”单元而不是“A4”单元?

Sheets("Reports").Range("A4:A8")正在返回一个Range对象,并且可以引用与该范围有关的单元格。 例如,如果将一个文本样本放在头上方的单元格中,并且您尝试MsgBox Category(-1) ,则会显示该值。

看看这个: http : //msdn.microsoft.com/en-us/library/office/ff841096%28v=office.15%29.aspx

由于ItemRange类的默认属性,因此可以在不明确使用Range.Item情况下引用它(例如, Category(0)在您的示例中与Category.Item(0)相同)

Item属性 – 无论显式地提供在Category.Item(0) ,还是隐式地在Category(0)返回,都会返回另一个范围,表示地址相对于您的范围的单元格。 这就是为什么如果您运行我的testing并调用单元格A2中的示例文本MsgBox Category(-1) ,它将显示该文本。

仅供参考:如果您想certificateCategory(0)本身就是一个范围,请运行MsgBox TypeName(Category.Cells(0))

将工作表名称从0开始插入到单元格中

我想为单元格命名(064149107)。 名称不能更改,工作簿中有许多工作表。

我的代码工作正常,除非我的工作表的名称由0开始。

例如,而不是064149107我在单元格中获得64149107。

在此之后,我正在做一个vlookup,我找不到匹配,并且错误2042。

这里是我的代码:

sht.Cells(LastRowsht + 1, 2) = sht.Name 

我也试过这个:

  If Left(sht.Name, 1) = "0" Then 'règle le probleme d'un sheet name commencant par 0 sht.Cells(LastRowsht + 1, 2) = "0" & sht.Name Else sht.Cells(LastRowsht + 1, 2) = sht.Name End If 

但我没有工作。

这个代码会在名称前面打勾。

 sht.Cells(LastRowsht + 1, 2).Value = chr(39) & sht.Name 

或者,您可以先将单元格的格式设置为“ Text

 sht.Cells(LastRowsht + 1, 2).NumberFormat = "@" sht.Cells(LastRowsht + 1, 2).Value = sht.Name 

你能不能尝试像这样的东西:

 sht.Cells(LastRowsht + 1, 2).Value = "'" & sht.Name 

我没有尝试过,但通过明确地使文本,我认为它应该工作。

您只需在“编号”选项卡中通过function区“主页”更改单元格的格式,然后通过“文本”更改“常规”。 然后再次运行代码。

但是请注意,您不需要VBA来填充单元格中的表格名称。 这可以用单元格内的公式完成:

 =MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,255) 

如何在产品中忽略0除法?

我有一个总和产品,我需要划分,所以其中一个input是1/AL:AL 。 问题是这些单元格中的一些是0.我试过1/if(AL:AL=0,1,AL:AL)iferror(1/AL:AL,1)但是两个仍然返回iferror(1/AL:AL,1) #DIV/0! 。 这是我的实际公式:

 =SUMPRODUCT('Data'!$I:$I,'Data'!$AV:$AV,**1/'Data'!$AL:$AL**) 

这应该为你工作:

 =SUMPRODUCT(Data!$I:$I,Data!$AL:$AL*(Data!$AV:$AV<>0)/((Data!$AV:$AV=0)+(Data!$AV:$AV<>0)*Data!$AV:$AV)) 

不过,强烈build议不要使用完整列引用与数组公式或计算数组的函数。 Sumproduct是计算数组的函数,使用整列引用对工作簿的速度和效率可能非常不利。 总是尽量使用尽可能有限的范围,例如调整后的公式可能如下所示:

 =SUMPRODUCT(Data!$I$1:$I$10,Data!$AL$1:$AL$10*(Data!$AV$1:$AV$10<>0)/((Data!$AV$1:$AV$10=0)+(Data!$AV$1:$AV$10<>0)*Data!$AV$1:$AV$10)) 

如果您使用整列引用来input新数据,请考虑使用dynamic命名范围或表引用 。

如果将公式与IFERROR(1/AL:AL,1)则应将其作为数组公式,并将光标放在公式栏中按CTRL+SHIFT+ENTER

当多列中的单元格为空或0时删除整行

我试图编写一个基本上看第13-33行的代码,并删除整个行,如果在列BM中的单元格都是空的,列A不是空白的。

我在下面写的第一个代码删除整个行,只有列B中的单元格是空的,但我需要BM中的所有单元格为空,以删除整个行。

Sub scheduleA() Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Sheets("Schedule A Template").Select Dim RowstoDelete As Long x = 33 For RowstoDelete = Cells(x, 2).End(xlUp).Row To 13 Step -1 If (Cells(RowstoDelete, 2).Value = "0") And (Cells(RowstoDelete, 1).Value <> "") Then Rows(RowstoDelete).Delete Shift:=xlUp End If Next RowstoDelete Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True End Sub 

我试着在下面的代码中以不同的方式写它,但不能达到期望的结果。

 Sub DeleteRows() Dim i As Integer For i = 33 To 13 Step -1 If WorksheetFunction.CountA(Range("B" & i, "M" & i)) = 0 And WorksheetFunction.CountA(Range("A" & i)) <> "" Then Rows(i).EntireRow.Delete End If Next i End Sub 

请帮忙!

您删除行的条件是:列A不是空白,列B到M空白。 然后像这样的事情应该做的伎俩:

 Sub ScheduleA() On Error GoTo errHandler Const TOP_ROW As Long = 13 Const BOTTOM_ROW As Long = 33 Dim rowIndex As Long Application.ScreenUpdating = False Application.Calculation = xlCalculationManual With ThisWorkbook.Worksheets("Schedule A Template") For rowIndex = .Cells(BOTTOM_ROW, "A").End(xlUp).Row To TOP_ROW Step -1 If Not IsEmpty(.Cells(rowIndex, "A").Value2) Then '...column A is not blank. If Application.WorksheetFunction.CountA(.Range(.Cells(rowIndex, "B"), .Cells(rowIndex, "M"))) = 0 Then '...all cells on row rowIndex from columns B to M are blank. .Rows(rowIndex).Delete Shift:=xlUp End If End If Next End With Cleanup: On Error Resume Next Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True Exit Sub errHandler: MsgBox Err.Description, vbExclamation + vbOKOnly, "Error" Resume Cleanup End Sub 

请注意, .Select消失了; 你几乎不需要select任何东西来完成工作。 不依赖于select将使您的代码更健壮。 在上面的代码中,当expression式以句点开头时, With块告诉其中的代码引用目标工作表,例如.Cells

此外,closuresScreenUpdatingCalculation ,系统地包含error handling以将其重新打开。 这样,如果出现问题,您的代码将不会离开Excel在不受欢迎的状态。

最后,你可以从VBA编辑器的属性窗口的工作表(Name)属性(按下Ctrl())中直接引用它们的CodeName,而不是通过它们的选项卡名称来引用工作表+ R显示Project Explorer,单击Microsoft Excel Objects节点下的工作表,然后按F4显示“属性”窗口)。 你可以改变这个值; 我通常会将其更改为shtScheduleATemplate。 然后, With行可以被重写为:

 With shtScheduleATemplate 

…甚至在您从Excel中更改工作表的名称后仍然可以工作。

编辑 :在你的问题的代码,你是检查列B确定在哪个底部行索引启动循环。 但是,通过这样做,您可能会错过一些应该删除的行。 我已经改变了我的答案,而不是在列A中检查:

 For rowIndex = .Cells(BOTTOM_ROW, "A").End(xlUp).Row To TOP_ROW Step -1 

检查单元格范围是否有大于或小于0的数字

有没有一种方法可以在L列中识别C和K之间的单元是否包含大于或小于零的数字?

如果是,则返回TRUE,否则返回FALSE。 所以在示例图片中,行号4和6应返回FALSE,行号1,2,5应返回TRUE。

SO25803923问题的例子

在L2中你可以使用这样的公式:

=IF(OR(C2<>0;D2<>0;E2<>0;F2<>0;G2<>0;H2<>0;I2<>0;J2<>0;K2<>0);TRUE;FALSE) 

然后把它拖下来。

如果值不均匀0,则返回TRUE,否则返回FALSE。

请尝试L2并复制到L6:

 =COUNTIF(C2:K2,"<>"&0)<>0 

这假定在C2:K6范围内只有数字,而不是string。 对于L7你可能想要:

 =COUNTIF(L2:L6,"FALSE") 

如果要返回False,其中列C和K之间的所有单元格包含“0”,并且对于所有其他实例可以使用以下值返回True:

 =(CONCATENATE(C2,D2,E2,F2,G2,H2,I2,J2,K2)<>"000000000") 

或者更短的版本:

 =IF(COUNTIF(C2:K2,"<>0"),"True","False") 

再次编辑 – 根据pnuts的回答,这个COUNTIF解决scheme不会将帐号0作为stringinput,但CONCATENATE应该

如果来自c2-k2的单元没有包含小于或大于零的值,则c2-k2的和为0,否则该总和小于或大于0

= IF(SUM(C2:K2)<> 0; TRUE; FALSE)

使用数组公式:

在单元格L2中input以下公式,然后按Ctrl + Shift + Enter

 =AND(C2:K2>0) 

您将得到TRUE或FALSE作为答案

函数单独工作但不在一起,返回0值

我最近在这里得到了第一个函数的帮助,但是我为难我的代码不工作..

我试图使用ReportTimeByOP函数来查找位于“sFolder”,以“sName”开头,并具有与ReadTextFile函数的“value38”结果相匹配的“sOPID”的最新文件。

无论出于什么原因,我都能够独立完成这两个function,但是我试图将它们合并为一个无缝操作已经失败了。 我目前拥有的是:

Function ReadTextFile(fpath) Dim fline As String Dim fnumb As Long Dim i As Long Dim Wanted As String fnumb = FreeFile Open fpath For Input As #fnumb i = 1 Do While Not EOF(fnumb) Line Input #fnumb, fline If i = 2 Then Wanted = Split(fline, vbTab)(38) Exit Do End If i = i + 1 Loop Close #fnumb MsgBox fpath ReadTextFile = Wanted End Function Function ReportTimeByOP(ByVal sName As String, ByVal sFolder As String, ByVal sOPID As String) Dim FileName As String Dim MostRecentFile As String Dim MostRecentDate As Date Dim value38 As String Dim oFSO As FileSystemObject If Right(sFolder, 1) <> "\" Then sFolder = sFolder & "\" Set oFSO = CreateObject("Scripting.FileSystemObject") If oFSO.FolderExists(sFolder) Then FileName = Dir(sFolder & sName & "*hdr.txt", 0) If FileName <> "" Then MostRecentFile = FileName MostRecentDate = FileDateTime(sFolder & FileName) Do While FileName <> "" value38 = ReadTextFile(sFolder & FileName) If FileDateTime(sFolder & FileName) > MostRecentDate And Trim(value38) = Trim(sOPID) Then MostRecentFile = FileName MostRecentDate = FileDateTime(sFolder & FileName) value38 = ReadTextFile(sFolder & FileName) End If FileName = Dir DoEvents Loop End If Else MostRecentFile = "Err: folder not found." End If Set oFSO = Nothing ReportTimeByOP = MostRecentDate End Function 

鉴于大量的文件,我会完全跳过Dir函数。 我也跳过创builddate的结果手动sorting(我假设这是标准 – 如果没有,它应该是相当容易修改)。 让Windows Shell为你付出沉重的代价。 与VBA Dir()函数或Scripting.FileSystemObject ,shell dir命令有许多参数,可以让您检索sorting的输出。 为了这个目的,浏览按相反顺序sorting的文件列表要高效得多。 你可以在这里看到所有的dir选项 。

所以,我会通过炮击到一个dir命令来解决这个问题,该命令按逆序date顺序检索文件列表,然后将其pipe理到一个临时文件,然后拿起临时文件来通过列表。 这样,当你find你的第一场比赛时,你可以退出。 然后你可以通过使用FileSystemObject来简化你的循环和ReadTextFile函数:

ReadTextFile:

 Public Function ReadTextFile(target As File) As String With target.OpenAsTextStream If Not .AtEndOfStream Then .SkipLine Dim values() As String If Not .AtEndOfStream Then values = Split(.ReadLine, vbTab) If UBound(values) >= 38 Then ReadTextFile = values(38) End If End If .Close End With End Function 

ReportTimeByOP:

 Function ReportTimeByOP(ByVal sName As String, ByVal sFolder As String, _ ByVal sOPID As String) As Date With New Scripting.FileSystemObject Dim temp As String temp = .BuildPath(.GetSpecialFolder(TemporaryFolder), .GetTempName) Dim seeking As String seeking = .BuildPath(sFolder, sName & "*hdr.txt") Shell "cmd /c dir """ & seeking & """ /b /a:-d /o:-d > " & temp 'Shell is asychronous - wait .2 seconds for it to complete. Sleep 200 With .GetFile(temp).OpenAsTextStream Dim directory() As String directory = Split(.ReadAll, vbNewLine) .Close End With .DeleteFile temp Dim i As Long Dim value38 As String Dim candidate As File 'Temp file will end with a newline, so the last element is empty. For i = LBound(directory) To UBound(directory) - 1 Set candidate = .GetFile(.BuildPath(sFolder, directory(i))) value38 = ReadTextFile(candidate) If Trim$(value38) = Trim$(sOPID) Then ReportTimeByOP = candidate.DateCreated Exit Function End If Next i End With End Function 

这个声明在某处:

 Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 

值0不显示在单元格中。 为什么?

我input公式:

=IF(OR(A3<>"";B3<>"";C3<>"";D3<>"";E3<>"";F3<>"";L3<>"";R3<>"";W3<>"";AB3<>"");ROW();0) 

进入细胞。 奇怪的单元格不显示值0,它什么都不显示。 但是如果我改变公式ti:

 =IF(OR(A3<>"";B3<>"";C3<>"";D3<>"";E3<>"";F3<>"";L3<>"";R3<>"";W3<>"";AB3<>"");ROW();"0") 

它显示一个0.为什么它不显示在第一个情况下零? 我已经检查过格式,它是“常规”。 我想不出还有什么可能造成这种情况。

在选项>高级>工作表的显示选项下,有一个checkbox,用于show a zero in cells that have zero value 。 确保这是检查您的工作表。

这个公式有点不对 应该是这样的:

 =IF(OR(A3<>"",B3<>"",C3<>"",D3<>"",E3<>"",F3<>"",L3<>"",R3<>"",W3<>"",AB3<>""),ROW(),0) 

用(,) – 逗号replace(;) – 分号。 这应该返回(0) int值。

另一方面:

 =IF(OR(A3<>"",B3<>"",C3<>"",D3<>"",E3<>"",F3<>"",L3<>"",R3<>"",W3<>"",AB3<>""),ROW(),"0") 

将返回一个(0) string值。

遍历每一列并删除“0”列

我没有得到任何错误,但它不是删除与“0”的列。 我只是想删除有很多0的列,你可以从我的代码中读取。 我不确定会出现什么问题,欢迎提供任何build议。

Sub Finalize() Dim finalform As Worksheet Dim deletename As String Dim finalworkbook As Workbook Dim ws As Worksheet Dim copyrange As Range Dim columnloop As Range Application.DisplayAlerts = False Application.ScreenUpdating = False Set finalform = Workbooks(ActiveWorkbook.Name).ActiveSheet For a = 3 To 18 If Range("B" & a).Value <> "" Then Workbooks.Open finalform.Range("B" & a).Value Set finalworkbook = Workbooks(ActiveWorkbook.Name) 'Delete sheets For b = 3 To 12 deletename = finalform.Range("D" & b).Value If deletename <> "" Then finalworkbook.Worksheets(deletename).Delete End If Next b 'Find, replace, remove For Each ws In ActiveWorkbook.Worksheets 'Copy paste values Set copyrange = ws.Cells copyrange.Copy copyrange.PasteSpecial xlPasteValues Application.CutCopyMode = False 'Delete columns with 0 For Each columnloop In copyrange.Columns d = 0 For c = 1 To 35 If Cells(c, columnloop.Column).Value = "0" Then d = d + 1 End If Next c If d > 5 Then columnloop.Delete End If Next columnloop Next ws End If Next a Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub 

你的循环可以用更有效的计数方法来代替。 在删除行或列时,应始终从范围开始,并朝A1前进,以便在下一次增量时不跳过列。

 Dim c As Long, ws As Worksheet 'Find, replace, remove For Each ws In ActiveWorkbook.Worksheets With ws .UsedRange.Cells = .UsedRange.Cells.Value 'Delete columns with 0 For c = .UsedRange.Columns.Count To 1 Step -1 If Application.CountIf(.Columns(c), 0) > 5 Then .Columns(c).EntireColumn.Delete End If Next c End With Next ws 

还有其他几个可以调整的地方。 一旦达到运营标准,考虑将其发布在代码审查(Excel)中以进一步改进。

从行中获取值> 0的所有列的逗号分隔列标题

我想要获取所有列标题的名称大于零的行。

到目前为止,我已经试过这=IF(COUNTA($A2:$E2)=0,"",INDEX($A$1:$E$1,MATCH(TRUE,INDEX($A2:$E2>0,0),0))

它给了我第一列大于零的名字。

 abcde 0 1 0 1 1 b 1 0 0 1 0 a 

而我需要这样的东西

 abcde 0 1 0 1 1 b,d,e 1 0 0 1 0 a,d 

我以前从来没有和excel一起工作过。 任何帮助表示赞赏

F2单元格中使用此公式并填充。

 =SUBSTITUTE(TRIM(CONCATENATE(IF(A2>0,$A$1 & " ",""),IF(B2>0,$B$1& " ",""),IF(C2>0,$C$1& " ",""),IF(D2>0,$D$1& " ",""),IF(E2>0,$E$1,"")))," ",",") 

在这里输入图像说明

我意识到上面的答案做这个工作,如果你不需要更多的dynamic,我的工作可能有点复杂。

但是,如果您确实需要更dynamic的解决scheme,则可以这样做:假设您的头文件位于单元格A1:E1中,并且您的数据在下面,则第一步是获取符合条件的值:= IF(A2 :E2> 0,A $ 1:E $ 1,“”)您需要input数组公式(Ctrl + Shift + Enter)

这将返回一个返回空白负载的数组,所以还有两件事情需要处理:1.从数组中删除空白2.连接数组,使其返回逗号分隔的string

不幸的是,Excel没有任何这些function(真的很遗憾),所以你需要一些VBA的魔力:

 Public Function joinArray(arr As Variant) arr = arr Dim i As Integer Dim s As String: s = "" For i = LBound(arr, 1) To UBound(arr, 1) s = s & arr(i) & "," Next i joinArray = Left(s, Len(s) - 1) End Function Public Function Strip(arr As Variant) arr = arr Dim v() As Variant Dim k As Integer, i As Integer For i = LBound(arr, 1) To UBound(arr, 1) If arr(i) <> "" Then ReDim Preserve v(0 To k) v(k) = arr(i) k = k + 1 End If Next i Strip = v End Function 

你现在可以调用= joinarray(strip(IF(A2:E2> 0,A $ 1:E $ 1,“”)))作为数组公式(Ctrl + Shift + Enter)

如果公式结果为0,则保留单元格为空

我想公式将单元格留空如果没有值…当我运行这个部分它说有一个错误..我相信错误是在

.Formula = "=IFERROR(E2*G2),"""")"

代码的整个部分是

 With Range("H2:H" & LastRow) .Formula = "=IFERROR((E2*G2),"""")" .Value = .Value End With 

也许这个

 With Range("H2:H" & LastRow) .Formula = "=IF(E2*G2=0,"""",e2*g2)" .Value = .Value End With 

理想情况下,而不是

 .Formula = "=IFERROR((E2*G2),"""")" 

你应该使用

 .Formula = "=IF(IFERROR((E2*G2),"""")=0,"""",IFERROR((E2*G2),""""))" 

因为这将处理Error以及0 。 因此根据评论您的公式将是

 .Formula = "=IF(IFERROR(INDEX(I:I,MATCH(VALUE(A2),E:E,FALSE)),"""")=0,"""",IFERROR(INDEX(I:I,MATCH(VALUE(A2),E:E,FALSE)),""""))" 

保持/插入前导0

我努力争取在我的项目中领先0。 这里是目前相关的代码片段:

Dim jobNum As String jobNum = Left(r1.Cells(1, 1), 6) r2.Cells(1, JOBCOL) = (jobNum) r2.Cells(1, JOBCOL).NumberFormat = "@" 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~我试过 –

  r2.Cells(1, JOBCOL) = CStr(jobNum) 

– 试图保持它在string模式,因为也许它正在粘贴这就是问题?

  If Len(jobNum) = 4 Then jobNum = "'00" & jobNum Else jobNum = jobNum End If 

好的,好吧,如果我不能正确读取它,也许我可以手动添加它? (预期的长度是6,如果长度登记为4我有一个问题,我需要添加在两个领先的0)

最后,我试图让它正确地阅读:

 Dim Jobnum as String Dim Jobnumfixed as Integer jobNum = Left(r1.Cells(1, 1), 6) jobnumfixed = format (jobnum, "000000") 

我从Excel VBA中拿走了所有这些不会保持领先的零 。 然而,他们都没有达到预期的结果,即在我的工作表中保持领先的0。 我究竟做错了什么? 我应该在哪里寻找解决这个问题?

谢谢

编辑:pipe理得到它的工作。 jobNum = Left(r1.Cells(1,1),6)变成了jobNum =(“'”&Left(r1.Cells(1,1),6)),现在所有的工作。 欢呼!

这是一个将前导零置于数字中的方法

 Sub LeadingZerosNumbers() Dim N As Long N = 1137 Range("A1").Value = N Range("A1").NumberFormat = "000000" End Sub 

这是一种将前导零置于看起来像一个数字的文本中的方法:

 Sub LeadingZerosText() Dim N As Long N = 1137 Range("A1").NumberFormat = "@" Range("A1").Value = "00" & N End Sub 

在这两种情况下, A1都会显示:

在这里输入图像描述

索引匹配为空白单元格返回0,希望它是“ – ”

我已经看遍了,并尝试了一堆不同的东西,非工作。

我可以得到错误显示-但我也想要一个空白单元格返回-

现在空白单元格返回0

如果有帮助,空白单元格出现在$C$6:$DD$50部分。

 =IFERROR(INDEX('Foundation Plates'!$C$6:$DD$50,MATCH($C9,'Foundation Plates'!$B$6:$B$50,0),MATCH(D$8,'Foundation Plates'!$C$5:$DD$5,0)),"-") 

  =IFERROR(IF(INDEX('Foundation Plates'!$C$6:$DD$50,MATCH($C9,'Foundation Plates'!$B$6:$B$50,0),MATCH(D$8,'Foundation Plates'!$C$5:$DD$5,0))=0,"-",INDEX('Foundation Plates'!$C$6:$DD$50,MATCH($C9,'Foundation Plates'!$B$6:$B$50,0),MATCH(D$8,'Foundation Plates'!$C$5:$DD$5,0))),"-") 

这个公式就像:
= IFERROR(If(Index = 0,“ – ”,Index),“ – ”)
它会工作,因为它testing索引如果= 0结果将是“ – ”如果<> 0它会给出相应的值

会添加一个ISBLANK条件实现你的目标?

 =IF(ISBLANK(<range>),"-",<your code>) 

你的公式返回0,这意味着find一个匹配,但相关单元格中的值是空白或0.如果公式没有find匹配的单元格,IFError将处理这个并返回“ – ”在这种情况下。

要从公式单元格中隐藏零,您可以使用“自定义格式”来隐藏零。

select公式单元格并根据公式单元格应用的现有格式,使用下面给出的格式自定义格式。

1)如果公式单元格具有通用格式,请尝试…

0; -0 ;; @

2)如果公式单元格有当前格式,试试这个…

$#,## 0.00 _);($#,## 0.00);

3)如果公式单元格具有date格式,请尝试此…

毫米/日/年;;

如果您想在零公式单元格中显示“ – ”而不是空格,请更改下面的自定义格式…

1) 0; -0; – ; @

2) $#,## 0.00 _);($#,## 0.00); –

3) mm / dd / yyyy ;; –

将单元格的值分配给多个单元格,直到剩余值为0

我正在寻找一个解决scheme,根据月数自动分配一个单元格的值(C3到C10)(B7到B10)。

任何人可以用这个公式帮助我?

在这里input图像描述

在这里input图像说明

首先,你可以做一个辅助行,如图所示,附加的图像从1开始。

然后将下面的公式应用到单元格(E5),然后拖动该范围。

公式:“= IF($ B5> = E $ 3,$ C5 / $ B5,0)”

相关图像

谢谢Abhinav

在单元格E7中键入以下公式:

= IF(COLUMN()-COLUMN($E7)+1<=$B7,$C7/$B7,0) 

然后将这个单元格拖过来,然后尽可能地拖下去。

对于第二部分,要计算月份的数量,您可以在单元格(“C4”)中添加公式为:

= MONTH(DATEVALUE(C3& “1”)) – 月(C2)+1

金额月份计算

对于每个循环删除行,如果单元格= 0

我试图写一个macros,将删除一行,如果一个单元格= 0给定的范围内。 我碰到的问题是For Each Loop运行时会find单元格并删除行,但是如果它下面的行也有0,它就会被代码跳过,因为代码已经移到了下一个范围。 我正在寻找一个macros,将在一个单元格范围内find0,并将循环在该范围有一个0,直到该单元格大于0.我已经得到这个作为一个工作正在进行中…

Sub Pub_Clean() Dim IRange As Range Dim VRange As Range Set VRange = Range(ActiveSheet.Range("b3"), ActiveSheet.Range("b3").End(xlDown)) For Each IRange In VRange If IRange = 0 Then IRange.EntireRow.Delete End If Next IRange End Sub 

删除时,典型的做法是从底部开始循环。 这需要一个索引指定的循环,而不是FOR EACH。 这里有一些细节:

 For I=TotalRows To 1 Step -1 Set c = Range("C" & I) ' code to check for criteria and delete if required Next I 

从这里采取: http : //www.ozgrid.com/forum/showthread.php?t=56516

对行进行处理的最快方法是运行自动筛选器并使用specialcells(xlcelltypevisible) 。 一个循环,尤其是删除行的循环要慢得多。 在你的情况下,这是更新:

 Sub Pub_Clean() Dim VRange As Range Set VRange = Range(ActiveSheet.Range("b2"), ActiveSheet.Range("b2").End(xlDown)) with VRange .autofilter .autofilter field:=1, criteria1:="0" .resize(.rows.count-1).offset(1).specialcells(xlcelltypevisible).entirerow.delete .autofilter End with End Sub 

其他答案在大多数情况下都是正确和有用的 – 自动过滤非常快速,而且在删除行时自底向上循环没有问题 – 但在某些情况下,您可能需要一个从上到下的循环。

在这种情况下,有两个重要的步骤:

  1. 删除后手动减less计数器variables,因为行号更改
  2. 使用while循环而不是for循环,因为Excel在for循环中cachingvariables

具有两列和十行的示例,其中第一列包含各种数字,并且应删除该列中所有带零的行:

 Sub DeleteRowWithLoop() ' Define start and end row numbers Dim lastRow As Long Dim i As Long i = 1 lastRow = 10 ' Use while loop to enable dynamic change of lastRow While i <= lastRow ' Get current row to work on Dim currentRow As Range Set currentRow = Range(Cells(i, 1), Cells(i, 2)) ' Delete whole row if first column contains zero ' Next and last cell numbers will have to be decreased If (Cells(i, 1).Value = 0) Then i = i - 1 lastRow = lastRow - 1 currentRow.EntireRow.Delete End If ' Increment while counter/current row number (even if nothing was deleted) i = i + 1 Wend End Sub 

在错误转到0不重置错误陷印

我在On Error GoTo 0重置error handling的印象。

那么为什么On error resume next似乎没有注册在以下?

 Sub GetAction() Dim WB As Workbook Set WB = ThisWorkbook On Error GoTo endbit: 'raise an error Err.Raise 69 Exit Sub endbit: On Error GoTo 0 '<<<reset error handling? On Error Resume Next WB.Sheets("x").Columns("D:T").AutoFit MsgBox "ignored error successfully and resumed next" End Sub 

您需要使用On Error GoTo -1 Err.Clear来重置错误陷印。

检查这个答案,我发布了几个月前的更详细的解释。

突出显示它是否是唯一不包含“0”的单元格

我在Excel中寻找一种方法来设置条件格式来帮助识别单个错误。 我们有一个包含一行值的Excel电子表格。 如果单个部分中只有错误,如下所示,则会突出显示:

突出示例 *注意, 1可能是2 ,仍然是突出显示

但是,如果在不同部分有多个错误。 它不会突出显示,如下所示:

不突出的例子

到目前为止我还没有find解决办法。

*编辑:看起来像我在正确的轨道上,现在感谢你们。 我想尝试这些解决scheme,但我现在必须运行。 当我第二次坐在我的电脑上时,我会试试看看它是否适合我。 那么我会接受一个答案。 再次感谢你们。

我想你想要的是在条件格式中的一个公式,例如=AND(COUNTIF($A1:$D1,0)=3,A1<>0)

SO18272522的例子

(使用Excel 2007)

我认为0以外的数字表示错误?

您可以在条件格式中使用此公式:

 =AND(A1<>0,COUNTIF($A1:$D1,"<>0")=1) 

假定第一个值在单元格A1中。 您可以根据需要更改范围和单元格引用。

如果所有值都是零或正数,请尝试此公式用于第2行的条件格式设置

=AND(A2<>0,COUNTIF(2:2,">0")=1)

您可以复制到其他行或根据需要更改“应用于”范围

计数0的链

我有800行唯一的用户input编号0-100。 每个用户join不同的日子,但测量的date(每个列1天)包括第一个可能的joindate和最后一个可能的,所以对于一些用户有很多0,直到他们join并开始提交数字,而也有一些join的用户然后离开,所以他们在他们行的尾部有很多0条目。 大多数用户在中间没有参与任何天数的中间有一些0的链,对于给定的用户当然可以有多于一个这样的链。 (你可以看到我可能不能很好地解释所附的图片)。

基本上我想计算什么是最大的0(或在我的情况下,缺席)是每个用户链。 也就是说,对于最近注册的用户来说,有一些非常大的链,我想忽略,因此我需要能够计算从用户join时开始的最大链,或者在此图表中首先有一个不是0的数字条目任何给定的date。

在这里输入图像说明

要计算B2:CZ2中最长的零值,在该范围中的第一个非零数字之后,可以使用这个“数组公式”

=MAX(FREQUENCY(IF(B2:CZ2=0,IF(B2:CZ2<>"",IF(COLUMN(B2:CZ2)>MIN(IF(B2:CZ2>0,COLUMN(B2:CZ2))),COLUMN(B2:CZ2)))),IF(B2:CZ2>0,COLUMN(B2:CZ2))))

CTRL + SHIFT + ENTER确认

如果0或“”删除行:代码工作,但非常缓慢

题:

随着录音机和在这个论坛上的帮助,我做了一个代码(一个button)。 列'我'已经(从第25行)“个人电脑”或一个号码。 我的macros查找PC并将其更改为“”,并将macros删除“”和0。 填充单元格的长度是可变的,所以我做了500个“结束”,但是它从来没有达到过。 如果我运行这个macros,它就可以工作,但是需要很长时间,尤其是因为它需要500行。

Sub Fix() Dim intEnd As Integer Range("M1").Select Cells.Replace What:="pcs", Replacement:="", LookAt:=xlPart, SearchOrder _ :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False intEnd = 500 Range("I25").Select Do Until ActiveCell.Row = intEnd If Int(ActiveCell.Value) = 0 Then Range(ActiveCell.Row & ":" & ActiveCell.Row).Delete intEnd = intEnd - 1 Else ActiveCell.Offset(1, 0).Select End If Loop End sub 

我很高兴能够在论坛和录音机的帮助下制作这个macros,但是现在我被卡住了,没有真正的线索从哪里开始。 有人有小费吗?

谢谢,如果需要更多的信息或努力,请让我知道。

尝试这个:

 Sub fix3() Dim intEnd As Long Dim ws As Worksheet Dim i As Long Application.Calculation = xlCalculationManual Application.ScreenUpdating = False Application.EnableEvents = False On Error GoTo getout Set ws = Sheets("Sheet1") 'Change to your sheet ws.Cells.Replace What:="pcs", Replacement:="", LookAt:=xlPart, SearchOrder _ :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False intEnd = ws.Range("I" & ws.Rows.Count).End(xlUp).row For i = intEnd To 25 If Int(ws.Cells(i, "I").Value) = 0 Then ws.Rows(i).Delete End If Next i Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True Application.EnableEvents = True Exit Sub getout: Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True Application.EnableEvents = True End Sub 

要以快速的使用方式来完成,你可以使用这个:

 Sub DelMe() Dim i As Long, x As Variant, y As Range With Sheets("Sheet1") x = .Range("I1", .Cells(Rows.Count, 9).End(xlUp)).Value If UBound(x) < 25 Then Exit Sub For i = 25 To UBound(x) If x(i, 1) = 0 Or x(i, 1) = "" Or InStr(1, x(i, 1), "pcs", vbTextCompare) > 0 Then If y Is Nothing Then Set y = .Rows(i) Else Set y = Union(y, .Rows(i)) End If End If Next y.EntireRow.Delete xlUp End With End Sub 

它只是一次删除所有的范围(你想要删除)。

如果你有问题,就问吧 :)

从用户定义函数返回空实际返回0

我需要用一个用户函数来填充一个单元格。 如果函数的结果不是零,则单元格应该简单地填入函数的结果; 到现在为止还挺好。

但是如果结果是零,我希望单元格是空的。

所以我写了这个用户定义的函数:

Function MyTestFunction(n As Integer) As Integer Dim result As Integer result = n * 2 If result = 0 Then MyTestFunction = Empty Else MyTestFunction = result End If End Function 

这个function没有真正的目的,只是为了调查这个问题。

Excel工作表如下所示:

在这里输入图像描述

单元格A1到A3只是键入数据,单元格B1到B3包含:

  • B1: =MyTestFunction(A1)
  • B2: =MyTestFunction(A2)
  • B3: =MyTestFunction(A3)

为什么单元格B3显示0而不是空的?

你已经定义了你的函数,以便总是返回一个整数,所以它的确如此。 一个空值不是一个整数。 你可以修改你的function如下:

 Function MyTestFunction(n As Integer) As Variant Dim result As Integer result = n * 2 If result = 0 Then MyTestFunction = "" Else MyTestFunction = result End If End Function 

你不能从任何公式中返回一个 (用内build函数或者用户定义的函数) ,看看这个 。

“”与“ Empty”不同,在很多情况下它们的行为是不同的。 通过在立即窗口中执行下面的行,在所选的空单元格和包含“”的单元格上可以获得差异的performance

 ? TypeName(Selection.Value) 

Empty作为公式的结果最有用的替代品取决于您对包含公式的单元格的使用情况,请参阅此处以了解其含义。

仍然在MS的待办事项列表(或者可能不是…)

编辑 :我发现以下相关的问题(这是值得检查的答案)

在Excel中从公式返回空单元格

函数不工作 – 显示0

我写了一个简单的函数来计算公司的奖金。 出于某种原因,它显示0,并没有给出答案。 有人可以帮我吗?

Function insurancebonus(penetration As Single, penetrationPlan As Single, _ renewalRate As Single, renewalPlan As Single, dealerRank As Single, _ premiumDynamic As Single) As Single Dim Total As Single Total = 0 If penetration >= penetrationPlan Then Total = Total + 0.01 If renewalRate >= renewalPlan Then Total = Total + 0.01 Select Case dealerRank Case 1 Select Case premiumDynamic Case 0 To 0.03: Total = Total + 0.01 Case 0.03 To 0.05: Total = Total + 0.02 Case 0.05 To 1: Total = Total + 0.03 End Select Case 2 Select Case premiumDynamic Case 0.02 To 0.04: Total = Total + 0.01 Case 0.04 To 0.08: Total = Total + 0.02 Case 0.08 To 1: Total = Total + 0.03 End Select Case 3 Select Case premiumDynamic Case 0.05 To 0.1: Total = Total + 0.01 Case 0.1 To 0.15: Total = Total + 0.02 Case 0.15 To 1: Total = Total + 0.05 End Select Case 4 Select Case premiumDynamic Case 0.1 To 0.17: Total = Total + 0.01 Case 0.17 To 0.25: Total = Total + 0.02 Case 0.25 To 1: Total = Total + 0.03 End Select Case 5 Select Case premiumDynamic Case 0.15 To 0.3: Total = Total + 0.01 Case 0.3 To 0.4: Total = Total + 0.02 Case 0.4 To 1: Total = Total + 0.03 End Select End Select End Function 

你还没有告诉函数返回任何东西。

我假设你想要返回Total价值?

如果是这种情况,在End Function之前添加下面一行:

insurancebonus = Total

这指定你的函数应该返回Total的值。

作为一个非常简短和人为的例子,这个函数简单地返回1。

 Public Function test() As Integer test = 1 End Function 

关键是你必须把值分配给你的函数的名字。

为了完整性,如果你的函数返回一个Objecttypes,你必须使用Set关键字,比如:

 Public Function testRange() As Range Set testRange = Range("A1") End Function 

这将返回一个Range对象。

无法理解<> 0的含义

嗨,我想了解一个公式,并写在C#,但到目前为止,我还没有设法了解这个公式做什么,请有人请解释?

if(if(c57=> d57;g57;h57)<>0;(((if(c57>=d57;d57;c57))*100/11))/(if(c57 >=d57;c57;d57)));(100/11))) 

真正让我失去的是<> 0,我search了一段时间,但到目前为止还没有find它所做的。 请有人解释一下吗?

<>0 “相当于”不等于零“

在这种情况下,它可能相当于“不是假”,例如采用公式的一部分:

if(c57=> d57)<>0

评估C57是否> = D57

意思是“不等于”,如≠。 在大多数编程语言中也被称为!=

这取决于语言,但在其中大部分<>意味着“不等于”。

<> 不等于运算符。

a1<>0与C#中的a1!=0相同。

有关Excel计算运算符的文档,请参阅http://office.microsoft.com/zh-cn/excel-help/calculation-operators-and-precedence-HP010342223.aspx?CTT=1

<>是不等式运算符,意味着a <> ba is not equal to b 。 这将在C#中写成a != b

据我所知,使用<>的唯一语言是VB / VbScript(这是Excel语法的基础),SQL,BASIC和Pascal。 在T-SQL中你可以使用!= ,但是它是非标准的SQL,因此<>是首选。

如果“0”则将单元格留空

我正在尝试创build一个简单的分类账,在“账面”的最右侧,它总计我input的任何借方/贷方。 但是不要将未使用的行留空,而是将最新的总量重复到页面底部。

如果公式等于0,我怎样才能使那个单元格变成空白?

=H15+G16-F16 

是我目前使用的公式。

您可以将列的数字格式更改为此自定义格式:

 0;-0;;@ 

这将隐藏所有的0值。

要做到这一点,select列,右键单击>格式单元格>自定义。

使用=IF(H15+G16-F16=0,"",H15+G16-F16)

应计分类帐应该注意零,即使这是用会计风格数字格式显示的连字符。 但是,如果您想要在没有值的情况下将行留空,请使用下面的公式,

  =IF(COUNT(F16:G16), SUM(G16, INDEX(H$1:H15, MATCH(1e99, H$1:H15)), -F16), "") 

这个公式有点棘手,因为您似乎已经将样本公式从某处下载到分类帐项目行的条目中,而不显示任何布局或示例数据。 我提供的公式应该能够放入H16,然后复制或填充到H列中的其他位置,但是我没有看到布局提供保证。

如果您发布了一些示例数据或一个公开可用的链接,以显示您的数据布局截图,可以提供更具体的帮助。 http://imgur.com/是一个很好的地方来举办一个截图,很可能有更多的声誉的人会插入图像到你的问题为你&#x3002;

IF语句的一个例子,如果value = 0,可以用来将计算添加到希望隐藏的单元格中,但是显示在另一个单元格值引用上。

= IF( /你的参考单元/ = 0,“”,SUM( /在这里你把你的SUM / ))

修剪尾随.0

我有一个包含部件号的Excel列。 这里是一个例子

正如你所看到的,它可以有很多不同的数据types: FloatIntString 。 我正在使用roo gem来读取文件。 问题在于roo将整数单元解释为Float ,为它们添加尾随零(16431 => 16431.0)。 我想修剪这个尾随零。 我不能使用to_i因为它会修剪所有需要十进制的单元格的尾部数字(上面的例子中的第一行),并且会在String行中的一个stringstring后面的所有内容(在上面的例子中是最后一行)。

目前,我有一个方法,检查单元格的最后两个字符,并修剪它们,如果他们是“.0”

 def trim(row) if row[0].to_s[-2..-1] == ".0" row[0] = row[0].to_s[0..-3] end end 

这工作,但感觉可怕,哈克。 将我的Excel文件内容导入到Ruby数据结构中的正确方法是什么?

 def trim num i, f = num.to_i, num.to_f i == f ? i : f end trim(2.5) # => 2.5 trim(23) # => 23 

或者,从string:

 def convert x Float(x) i, f = x.to_i, x.to_f i == f ? i : f rescue ArgumentError x end convert("fjf") # => "fjf" convert("2.5") # => 2.5 convert("23") # => 23 convert("2.0") # => 2 convert("1.00") # => 1 convert("1.10") # => 1.1 

ActionView有一个带有strip_insignificant_zeros的number_with_precision方法:处理这个的真实参数。

 number_with_precision(13.00, precision: 2, strip_insignificant_zeros: true) # => 13 number_with_precision(13.25, precision: 2, strip_insignificant_zeros: true) # => 13.25 

http://api.rubyonrails.org/classes/ActionView/Helpers/NumberHelper.html#method-i-number_with_precision

尝试:

 "16431.0".to_i #=> 16431 

这应该涵盖大多数情况下的需求: some_value.gsub(/(\.)0+$/, '')

它修剪所有尾随零和一个小数点后面只有零。 否则,它将单独留下string。

这也是非常高效的,因为它完全基于string,不需要浮点或整数转换。 (假设你的input值已经是一个string)

 Loading development environment (Rails 3.2.19) irb(main):001:0> '123.0'.gsub(/(\.)0+$/, '') => "123" irb(main):002:0> '123.000'.gsub(/(\.)0+$/, '') => "123" irb(main):003:0> '123.560'.gsub(/(\.)0+$/, '') => "123.560" irb(main):004:0> '123.'.gsub(/(\.)0+$/, '') => "123." irb(main):005:0> '123'.gsub(/(\.)0+$/, '') => "123" irb(main):006:0> '100'.gsub(/(\.)0+$/, '') => "100" irb(main):007:0> '127.0.0.1'.gsub(/(\.)0+$/, '') => "127.0.0.1" irb(main):008:0> '123xzy45'.gsub(/(\.)0+$/, '') => "123xzy45" irb(main):009:0> '123xzy45.0'.gsub(/(\.)0+$/, '') => "123xzy45" irb(main):010:0> 'Bobby McGee'.gsub(/(\.)0+$/, '') => "Bobby McGee" irb(main):011:0> 

数字值返回为types:float

 def convert_cell(cell) if cell.is_a?(Float) i = cell.to_i cell == i.to_f ? i : cell else cell end end convert_cell("foobar") # => "foobar" convert_cell(123) # => 123 convert_cell(123.4) # => 123.4 
Interesting Posts

INDIRECTfunction错误

在没有安装Excel的服务器上使用Ruby读取和写入Excel文件

(在Excel中)随机产生一个幂律分布

Azure机器学习工作室:如何从本地Excel文件添加数据集?

数组中的Foreach循环以及如何包含它

CSV数据导出OTRS

间接行excel地址

通过Coldfusion禁用Excel错误检查

规范化权力查询中的csv字段(M)

在excel中生成一个真值表

快速估算Excel文件中的行数

用ruby读取和写入相同的excel文件

如何find值并在VB中创build它们的数组excel?

编写一个文件来优化电子表格的问题

用IF公式编程方式填充Excel单元不起作用

你可以为UDF定义名称,然后在定义之外指定参数吗?

Excel中不同时期的降雨总和,中位数和平均值

Excel NetWorkdays()内置function在日本电脑中失败

预测年份年份Excel中每日更改数据

向SUMPRODUCT公式添加IF语句以避免空白

编写一个文件来优化电子表格的问题

从多张纸中引用相同的单元格

如何给数组中的单词添加引号以将它们像string一样对待

在电子表格中,如何删除一列中的条目,如果它们出现在另一列中?

如何在Excel中返回来自多个条件的多个匹配的列标题?

根据一个数字,列出x的一个字母。

数组公式查找第二大数

如何在excel vba中创build一个没有设置限制的数组?

Axlsx似乎忽略了image.start_at

任何方式编辑Excel中的红移表?

Excel:总和除了前三名之外的其他值

在添加到计数器之前,如何检查行之前的单元格是否相同

如何引用一个variables范围

CSV数据导出OTRS

条件如果在电源查询的高级编辑器

将数组作为parameter passing给VBA函数

Excel数组函数返回find的索引和匹配的所有字段

Ruby on Rails和Axlsx – 关于build立大量数据的build议

如何使用Spreadsheet gem编辑.xls中的标签?

只有当名字以他们开头的时候才能删除特定的字符

使用rubygem“creek”parsingexcel

pandasExcel导入仅适用于单个函数调用 – 第二个函数调用时出错

Excel SUMPRODUCT与dynamic列范围总和

Pentaho Data Inegration – 多个Excel文件input加载

Excel:在另一个单元格中指定工作表名称用于识别公式

Coldfusion SpreadsheetAddRow() – 如何用逗号绕过值

根据search关键字从另一个表中的某些列导入行

基于sumif的Excel函数数组公式求最小值

在Swift中下载和处理.xls(Excel)文件

Excel中的国际macros

如何将Excel文件反序列化为二维数组?

如何将文本types持续时间数据转换为Excel中的时间数据格式?

R将包含反斜杠的string从文件传递给charToRaw,而不会转义

Perl:将数据从散列转储到Excel中

Coldfusion:获取NullPointerException尝试编辑电子表格

将非空数组值粘贴到Excel中

问题与数组/匹配/索引

SUMPRODUCT具有多个条件的dynamic列

INDIRECT函数返回#REF

ARRAY公式EXCEL中的多条件IF语句

间接行excel地址

如何从Rails 4引用和更新S3上的文件

将所有工作表数据打印到用户表单文本框中

将行整理,整理并转换为列

MAC OS X:在Excel公式或Excelmacros中findDropbox本地文件夹的计算机独立path

在Excel中避免循环引用

在C#中嵌套的分类静态类中find一个值

有没有办法将单独的Excel文件导入到主文档中

保存一个大单元arrays作为单独的input文件MATLAB

在Excel中使用多个条件计数唯一

在Excel中避免循环引用

Excel查找Colum 2和基于Letter的显示百分比

具有指定百分比的Excel随机数

Excel将不会显示工作簿工作表

数组中的Foreach循环以及如何包含它

Ruby:使用默认值在Excel中创build一个下拉列表

如何将数据从Windows Mobile应用程序导入Excel中的C#

EXCEL查找最小值与多个条件

Excel文本格式不适用于Office编写器报告

在Mac上的Excel 2011中的Un-Pivot表

将所有工作表数据打印到用户表单文本框中

在Swift中下载和处理.xls(Excel)文件

XLSXclosures了一些导入喜好?

通过反向工程deviseExcel电子表格来devise报告

Excel的TDIST函数的伪代码实现

转置arrays和自动填充

按行参照其他单元格的值进行求和

如何将字体样式和大小应用于基于内容的Excel工作表文本列?

引用另一个单元格的variables?

如何在Excel工作表中从多列中select一列的单元格

Excel公式在命名时返回#value

ReporteRs:如何将格式化表格写入pptx和xlsx?

如何用循环的名字创buildvariables

SQL:比较行中的电子邮件地址,并检索未find的行

导出为Excel时的新行符号

将结构中的数组数组复制到Cell Array-Matlab

Excel – sumifsdynamic数组文字

总结如果有多个标准

转置arrays和自动填充

将“spinners”导入到Google文档中

你可以为UDF定义名称,然后在定义之外指定参数吗?

计算一个单位在游戏中的价值

Excel数据复制

将非空数组值粘贴到Excel中

数组中的Foreach循环以及如何包含它

Excel:所有工作表的最新状态

如何从不同的Excel文件和工作表导入数据到一个主要的Excel文件

应用脚本将数据从Excel文件中提取到Google表格

Excel计算左边的单元格的值,右边的单元格计算公式

图表中的Power Bidate

防止Excel应用程序被通过电子邮件发送

Rails 4,axlsx和acts_as_xlsx:如何使每个列自己的工作表?

如何在Excel工作表中从多列中select一列的单元格

SoftArtisans.OfficeWriter.Shared.SARuntimeException:不能有隐藏的工作表被选中

在Excel中使用If Large语句并填充表的余数

如果公式不起作用 – 尝试计算项目的正确运输成本(Excel)

数组中的Foreach循环以及如何包含它

在刷新Azure数据库时,需要在Excel中使用SQL Serverlogin

保存一个大单元arrays作为单独的input文件MATLAB

Excel VBA从Txt文件中提取指定的开始和长度

pandasExcel导入仅适用于单个函数调用 – 第二个函数调用时出错

在工作簿中实时共享Excel多单元arraysselect

以编程方式创build.xls文件

CSV数据导出OTRS

简单的VBA数组连接不工作

从excelfile upload产品

使用rubygem“creek”parsingexcel

如何将邮件项目导出到Excel文件

如何pipe理跨多个数据集的查询

Excel VBA从Txt文件中提取指定的开始和长度

excel限制行限制。 我还可以创build一个大于限制的文件吗?

使用OR和AND以及可能的查找的Excel公式

无需编写文件coldfusion下载Excel表单查询结果

excel函数INDIRECT()

SUMPRODUCT具有多个条件的dynamic列

Rails不允许在大约60000个单元格中添加数据?

为什么将单元格内容设置为左alignment(Aspose Cells)?

使用任务计划程序在Excel的运行实例中打开Excel文件

将numpy数组转储到excel文件中

如何为一组水平的时间序列数据创build条件SUMPRODUCT公式

比较Excel中具有相同含义的两个不同的句子

Excel数组函数返回find的索引和匹配的所有字段

Ruby:parsingExcel 95-2003文件?

在Excel VBA中dynamic地标注多个工作表中的数组?

如何引用VBA Max或Ubound函数的数组地址?

为什么我的VBA数组内容在我想要重用时消失?

Excel和使用桥表的多值维度

Azure机器学习工作室:如何从本地Excel文件添加数据集?

如何将数据从Windows Mobile应用程序导入Excel中的C#

IronPython Excel RTDServer

置信区间

Ruby不从excel文件input文本字段中的文本

如何引用VBA Max或Ubound函数的数组地址?

在Excel中将long和lat附加到地址表中

这个值是什么意思是excel中的1.845E-07?

分别为pandas中的列标题创build一个参数数组

无需编写文件coldfusion下载Excel表单查询结果

我想上传一个Excel电子表格到IIS,然后导入其内容

INDIRECT函数引用其他工作表的单元格范围

简单的Excel代码数组问题

相当于Excel中使用Pythonpandas的数组

如何使用Google Drive / Spreadsheet API将excel文件转换/导入为新的工作表?

问题与数组/匹配/索引

Excel – 只select一个最大值

要读取Excel,我们可以使用Spring批处理?

通过Coldfusion禁用Excel错误检查

如何引用VBA Max或Ubound函数的数组地址?

按行参照其他单元格的值进行求和

列和行在xlsx文件中折叠

Excel SUMPRODUCT与dynamic列范围总和

将非空数组值粘贴到Excel中

Excel数组查找公式

循环通过python数组来匹配第二个数组中的多个条件,快速的方法?

Axlsx似乎忽略了image.start_at

在Excel表格中移动范围/数组参考

在Mac上的Excel 2011中的Un-Pivot表

有没有办法将单独的Excel文件导入到主文档中

Node.js Web和移动应用程序 – 哪里可以读取excel文件?

命名Excel工作表使用数组C#

Rails:Excel列,种子

Ruby:parsingExcel 95-2003文件?

Pentaho Data Inegration – 多个Excel文件input加载

如果Excel中的某个单元格包含数组公式(例如`= {1,2,3}`),我可以使用VBA提取数组的元素

VLOOKUP未在数组中find值

使用Aspose格式化前导零

Excel – 根据单元格值对不同列表进行dynamic计数

使用Roo导入Excel文件,错误:不推荐将`packed`或`file_warning`作为单独的参数提供给`Roo :: Excel.new`

用有限的速度求解加速度

使用rubygem“creek”parsingexcel

通过http连接到Excel 2007中的SSAS 2005:如何让它询问用户名和密码?

在多个date范围中searchdate并返回相应的值

计算一个单位在游戏中的价值

Excel和使用桥表的多值维度

计算Excel VB数组列中非空字段的数量

循环并比较数组中的值

引用另一个单元格的variables?

总结如果有多个标准

Ruby不从excel文件input文本字段中的文本

rubyroo从parsing中放列

Excel查找Colum 2和基于Letter的显示百分比

平均如果移动平均

识别没有数组公式的单元

Excel:通过单元格引用将数组parameter passing给公式

防止Excel应用程序被通过电子邮件发送

基于2个具有空值的数组进行计数

将行整理,整理并转换为列

rubyroo从parsing中放列

为什么我的VBA数组内容在我想要重用时消失?

在没有安装Excel的服务器上使用Ruby读取和写入Excel文件

Pentaho Data Inegration – 多个Excel文件input加载

Excel是否评估提供给IF函数的结果参数?

在Excel中获取多个input的多个结果

如何在Excel VBA中切片数组?

Excel VBAvariables数组可重用,必须被擦除?

CF 10生成的电子表格将date显示为文本

返回最后一个填充的单元格在可变范围内的值

R将包含反斜杠的string从文件传递给charToRaw,而不会转义

ARRAY公式EXCEL中的多条件IF语句

Excel和使用桥表的多值维度

Excel 2013中可以使用大型数据集吗?

可拖曳的间接Excel

Excel多行条件(欢迎使用数组或脚本解决scheme)(企业营业额阈值)

Excel文本格式不适用于Office编写器报告

在导入Excel表格时从string末尾删除空格时出现不正常的行为

Excel是否评估提供给IF函数的结果参数?

将非空数组值粘贴到Excel中

循环并比较数组中的值

如何访问CF8中的excel文件?

相当于Excel中使用Pythonpandas的数组

总结如果有多个标准

在Swift中下载和处理.xls(Excel)文件

置信区间

将结构中的数组数组复制到Cell Array-Matlab

相当于Excel中使用Pythonpandas的数组

Excel – 每天从在线xls文件导入数据

将INDEX MATCH公式更改为EXCEL中的数组公式

使用ruby更新现有的Excel文件模板公式

如何使excel表格中的值成为matlab中的matrix元素

将excel列字母转换为Ruby中的整数

Excel格式重复值 – 更改单元格中的文本

CF 10生成的电子表格将date显示为文本

excel公式计算

图表中的Power Bidate

只有当名字以他们开头的时候才能删除特定的字符

比较Excel中具有相同含义的两个不同的句子

引用另一个单元格的variables?

从excel中读取数据到vector中

Excel中的间接函数

SQL数据导出

除了在Excel中如果使用什么逻辑函数

返回最后一个填充的单元格在可变范围内的值

SUMPRODUCT具有多个条件的dynamic列

Microsoft Excel饼图错误

循环通过python数组来匹配第二个数组中的多个条件,快速的方法?

你如何使Excel中的生活游戏?

在Mac上的Excel 2011中的Un-Pivot表

使用ColdFusion 8将图像添加到Excel文档中的行

Excel饼图与类别和拉片

Excel / C – 用数组获取input*

Excel:在另一个单元格中指定工作表名称用于识别公式

你如何使Excel中的生活游戏?

生成N个随机数,其总和是一个常数K – Excel

从ColdFusion页面导出到Excel文件错误?

使用“SUMPRODUCT”公式中的“INDIRECT”函数进行真/假单元格引用

INDIRECTfunction错误

问题与数组/匹配/索引

将INDEX MATCH公式更改为EXCEL中的数组公式

在Excel中创build数组作为input

以下function需要excel公式

在Excel中获取多个input的多个结果

如果在列表中找不到类别,则Excel总计值(更好的编码方法)

Rails上传xls,保存xlsx

Excel函数 – 循环引用

Microsoft Excel饼图错误

Excel中不同时期的降雨总和,中位数和平均值

外推线性回归

在excel中build立一个二维数组

如何用循环的名字创buildvariables

从excelfile upload产品

在Excel中使用If Large语句并填充表的余数

你如何使Excel中的生活游戏?

如何使用Coldfusion编辑电子表格

Excel-从分数上的选票制作数组

向SUMPRODUCT公式添加IF语句以避免空白

VLOOKUP未在数组中find值

嵌套如果陈述与这么多文本条件错误

条件如果在电源查询的高级编辑器

Excel如何返回符合一定条件的数组?

我想上传一个Excel电子表格到IIS,然后导入其内容

只有当名字以他们开头的时候才能删除特定的字符

使用ColdFusion创buildExcel文件的最佳方法是什么?

上传并读取excel文件,并使用groovy grails在数据库中插入数据

转换Excel文件的工具? (交换列,基本的string操作等)

加快arrays公式

Excel VBAvariables数组可重用,必须被擦除?

PHP相当于Excel的MROUND函数,四舍五入到最接近的倍数

Excelmacros – 从数组中读取数据

在ruby中执行外部程序并等待执行

我如何编写一个Excel公式来比较年初至前几年,还要考虑闰年?

将行整理,整理并转换为列

IronPython Excel RTDServer

根据if语句更改评论

为什么我的VBA数组内容在我想要重用时消失?

如何在Rails中上传和parsingExcel文件?

使用Aspose单元的同一个Excel工作表上的多组单选button

只有当名字以他们开头的时候才能删除特定的字符

根据一个数字,列出x的一个字母。

如果Excel中的某个单元格包含数组公式(例如`= {1,2,3}`),我可以使用VBA提取数组的元素

与数组条件产生和

将INDEX MATCH公式更改为EXCEL中的数组公式

Rails 4,axlsx和acts_as_xlsx:如何使每个列自己的工作表?

VBA – 获取数组中第n个最大值的索引

在Excel VBA中dynamic地标注多个工作表中的数组?

编写一个文件来优化电子表格的问题

EXCEL查找最小值与多个条件

Excel – 对一个单元格中的If语句栏进行求和

如何在Rails中上传和parsingExcel文件?

防止Excel应用程序被通过电子邮件发送

Ruby Spreadsheet Gem:从Excel文件中的公式单元格中提取值

如何将邮件项目导出到Excel文件

如何使用Google Drive / Spreadsheet API将excel文件转换/导入为新的工作表?

Ruby Sketchup,从打开的Excel工作簿中获取一个值

如何用Rails导出大型的XLS

(嵌套)IF语句来计算Excel中的MEAN

以编程方式创build.xls文件

ReporteRs:如何将格式化表格写入pptx和xlsx?

要读取Excel,我们可以使用Spring批处理?

嵌套的IF / AND / OR语句

与间接的SUMPRODUCT

Excel:总和除了前三名之外的其他值

在Excel中获取多个input的多个结果

为什么在一个SUM中包装Excel数组公式不会产生这种情况下的内容总和?

在C#中嵌套的分类静态类中find一个值

将数据行从一个Excel文件dynamic复制到另一个

将结构中的数组数组复制到Cell Array-Matlab

用多个工作表输出一个Excel文件

Excel VBA从Txt文件中提取指定的开始和长度

图表中的Power Bidate

在Excel中自动平均列的列

Excel中的国际macros

在Excel表格中移动范围/数组参考

加快arrays公式

无需编写文件coldfusion下载Excel表单查询结果

Excel中如何击败32,767文本限制的新思路

如何在Excel中返回来自多个条件的多个匹配的列标题?

Excel数组函数返回find的索引和匹配的所有字段

混合编号和文本时出现意外的COUNTIF行为(EXCEL)

编写一个文件来优化电子表格的问题

Excel UDF接受范围和数组作为参数像“SUM”

以编程方式创build.xls文件

SoftArtisans.OfficeWriter.Shared.SARuntimeException:不能有隐藏的工作表被选中

Ruby:使用默认值在Excel中创build一个下拉列表

为什么设置一个单元格的颜色不起作用(Aspose Cells)?

将数组作为parameter passing给VBA函数

通过非迭代计算解决我的循环引用?

计算一个单位在游戏中的价值

分别为pandas中的列标题创build一个参数数组

如何在Excel中返回来自多个条件的多个匹配的列标题?

如何获取在页面末尾有注释的Excel表页数

只有以.4或以上结尾才能进行综合

Json或Excel完整的企业分类文件

擅长匹配经纬度和长点

Excelmacros的数字签名

具有4个条件的Excel IF语句

复制Excel公式并控制相对引用

如何使用Google Drive / Spreadsheet API将excel文件转换/导入为新的工作表?

转置arrays和自动填充

在Mac中,阅读Excel中有多less单元格具有某种颜色

如何将Excel文件反序列化为二维数组?

如何引用VBA Max或Ubound函数的数组地址?

在Excel中的两个值之间生成一个正态分布的随机整数列表

SQL:比较行中的电子邮件地址,并检索未find的行

Ole :: Storage :: FormatError:OLE2签名无效

Excel / C – 用数组获取input*

相当于Excel中使用Pythonpandas的数组

Excel中不同时期的降雨总和,中位数和平均值

使用rubygem“creek”parsingexcel

Coldfusion:获取NullPointerException尝试编辑电子表格

置信区间

用ruby读取和写入相同的excel文件

将数组作为parameter passing给VBA函数

用if函数检查相同的date

(嵌套)IF语句来计算Excel中的MEAN

非序列序列号

要读取Excel,我们可以使用Spring批处理?

Excel中的影响排名

从Excel到Access:格式化为破折号的零导致导入错误

预测年份年份Excel中每日更改数据

Excel VBA – 数组公式忽略If语句

与数组条件产生和

在IronPython中从Excel获取pathstring

SoftArtisans.OfficeWriter.Shared.SARuntimeException:不能有隐藏的工作表被选中

在刷新Azure数据库时,需要在Excel中使用SQL Serverlogin

如何在Excel中擦除数据,特别是删除特定范围之外的极端exception值?

根据search关键字从另一个表中的某些列导入行

与数组条件产生和

平均如果移动平均

Excel-从分数上的选票制作数组

Excel:如何从条件单元格返回评论

列和行在xlsx文件中折叠

Excel和使用桥表的多值维度

基于sumif的Excel函数数组公式求最小值

INDIRECT函数返回#REF

在Excel表格中移动范围/数组参考

如何访问CF8中的excel文件?

生成N个随机数,其总和是一个常数K – Excel

这个值是什么意思是excel中的1.845E-07?

根据if语句更改评论

使用INDIRECT在另一个电子表格中对单元格进行求和

在刷新Azure数据库时,需要在Excel中使用SQL Serverlogin

嵌套如果陈述与这么多文本条件错误

Excel数组查找公式

下标超出范围的VBA Excel数组

置信区间

使用INDIRECT在另一个电子表格中对单元格进行求和

如何使excel表格中的值成为matlab中的matrix元素

如果公式不起作用 – 尝试计算项目的正确运输成本(Excel)

为什么线性拟合的结果在R和Excel(Gnumeric Spreadsheet和WPS)中有相同的小数据?

如何在excel vba中创build一个没有设置限制的数组?

将两个不相邻的列分组到Excel VBA脚本的二维数组中

Google表格ARRAYFORMULA()与Excel {}有不同的结果?

Rails:Excel列,种子

Excel中的影响排名

数组公式查找第二大数

Pentaho Data Inegration – 多个Excel文件input加载

Excel SUMPRODUCT与dynamic列范围总和

Excel列表顶部发生的数字

如果D列是直接的,Sumproduct(E,F)

IMEX = 1和TypeGuessRows = 0不适用于ZipCode

使用ColdFusion 8将图像添加到Excel文档中的行