数组不填充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 error
行arr(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
- Excel工作表可以用作UDF吗?
- 基于sumif的Excel函数数组公式求最小值
- 使用“SUMPRODUCT”公式中的“INDIRECT”函数进行真/假单元格引用
- Coldfusion:获取NullPointerException尝试编辑电子表格
- VBA – 获取数组中第n个最大值的索引
- Ruby:使用默认值在Excel中创build一个下拉列表
- Excel数组函数返回find的索引和匹配的所有字段
- Excelmacros的数字签名
- 以下function需要excel公式
总和数字+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。 我发现在单个单元格上使用求和有时可能会返回不正确的答案。 不知道为什么,但确实如此。 因此,很久以前我不使用这个总和,除非有一个范围包括多个单元格。
- 使用string和图像导出核心数据以实现卓越
- 在Excel中自动平均列的列
- 如果公式不起作用 – 尝试计算项目的正确运输成本(Excel)
- IF语句组合多个列
- 在Excel中使用两个不同的列表一起添加两列
- Excelmacros的数字签名
- 使用Aspose单元的同一个Excel工作表上的多组单选button
- 基于sumif的Excel函数数组公式求最小值
- 间接自动完成的困境
子程序返回全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
- Excel SUMPRODUCT与dynamic列范围总和
- MATLAB:如何用相同的字段列表结构
- Rails Axlsx列宽和包装文本
- 基于2个具有空值的数组进行计数
- PHP相当于Excel的MROUND函数,四舍五入到最接近的倍数
- 从Excel文件parsingstring的问题
- 返回最后一个填充的单元格在可变范围内的值
- 如何访问CF8中的excel文件?
- 间接参照总和范围
如何给一个单元格添加一定数量的0?
我需要一个单元格为10个字符长,并填写0开头的数字,使其10个字符。
例如:单元格A1是1990,我需要它是0000001990.单元格B2是82.我需要它是0000000082。
该单元可以是任何数字的范围。
我怎么去做这个?
我想你正在寻找TEXT函数,如下所示:
=文本(A1, “0000000000”)
- (在Excel中)随机产生一个幂律分布
- 在Excel中“饼图”中隐藏一系列数据标签
- Excel计算左边的单元格的值,右边的单元格计算公式
- 擦除数组中的空单元格
- 可拖曳的间接Excel
- Excel:所有工作表的最新状态
- 你如何使Excel中的生活游戏?
- 如何将Excel文件反序列化为二维数组?
- 下标超出范围的VBA Excel数组
如何从最后一个单元格取第二个不等于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
以获得第三个,依此类推。
- Excel:总和除了前三名之外的其他值
- 将两个不相邻的列分组到Excel VBA脚本的二维数组中
- 如何将Azure机器学习输出导出到CSV
- 将数组公式从MS Excel转换为Google表格
- 如何在Excel工作表中从多列中select一列的单元格
- Excel INDIRECT忽略错误
- 如何将字体样式和大小应用于基于内容的Excel工作表文本列?
- 循环浏览文件夹中所有Excel工作簿中的所有工作表,以更改所有单元格中文本的字体,字体大小和alignment方式
- 从电子表格或数据库文件中的大型数据集创build字典
从一个工作簿复制/粘贴到另一个正在返回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
,而不是使用ThisWorkbook
。 ActiveWorkbook
是一个“在上面”。 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
- Excel中的间接函数
- Node.js Web和移动应用程序 – 哪里可以读取excel文件?
- VBA – 获取数组中第n个最大值的索引
- 上传并读取excel文件,并使用groovy grails在数据库中插入数据
- 将数据行从一个Excel文件dynamic复制到另一个
- 在Excel中创build数组作为input
- (在Excel中)随机产生一个幂律分布
- 在Excel表格中移动范围/数组参考
- 应用脚本将数据从Excel文件中提取到Google表格
获取行的最大值或最小值,但忽略空白列或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)
- INDIRECT函数引用其他工作表的单元格范围
- 在Mac上的Excel 2011中的Un-Pivot表
- 间接自动完成的困境
- excel和机械特克
- 在Excel中“饼图”中隐藏一系列数据标签
- 如何对Ruby中的Excel事件做出反应?
- Groovy POI创build的单元格被其他程序视为空白,直到在单元格中手动按下ENTER
- 以编程方式创build.xls文件
- 如何将数据从Windows Mobile应用程序导入Excel中的C#
如何从单元格中减去它们的值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是使用substractValue
variables,并减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
- 循环浏览文件夹中所有Excel工作簿中的所有工作表,以更改所有单元格中文本的字体,字体大小和alignment方式
- 使用Axlsx将图像添加到HeaderFooter
- 使用Excel在泡泡图的每个泡泡内绘制一张馅饼图?
- 如何在Excel工作表中从多列中select一列的单元格
- 使用在不同子函数中创build的对象数组
- Excel:间接() – 填写电子表格中其他指定工作表的汇总表
- Excel的TDIST函数的伪代码实现
- 使用Aspose格式化前导零
- 从Excel到Access:格式化为破折号的零导致导入错误
什么公式来调整一个数字,所以一个给定的单元格总是> 0?
我正在使用相当简单的公式在谷歌电子表格上工作。
我试图让“Q出售”自动计算,使“平等”总是真实的。 目标是让工作表find我需要出售的最小数量来支付费用。 平等的公式是总支出。
另外一个问题是find一个保持X真的数字的公式是什么?
将公式=上限(F2 / B2)放入Q to Sell列中? (其中F2是“费用”下的第一个单元格,而B2是“卖出P”下的第一个单元格)
这只是计算费用除以销售Pfind你需要出售的数量。 这将等于一个小数,所以我们使用=ceiling()
函数将其四舍五入到最接近的整数。
尝试使用CEILING
function:
- Excel UDF接受范围和数组作为参数像“SUM”
- 从Excel文件parsingstring的问题
- 如果在列表中找不到类别,则Excel总计值(更好的编码方法)
- 导出为Excel时的新行符号
- Excel公式在命名时返回#value
- Rails:Excel列,种子
- pandasExcel导入仅适用于单个函数调用 – 第二个函数调用时出错
- 如何计算单元格数组中出现的string的实例
- Excel中的间接函数
当数值为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
直接放在单元格中)。
- 无需编写文件coldfusion下载Excel表单查询结果
- Excel:如何从条件单元格返回评论
- 通过foreach循环从Excel导入
- Excel查找Colum 2和基于Letter的显示百分比
- Excel格式重复值 – 更改单元格中的文本
- 具有刷新function的Power BI数据源
- 在MATLAB中将不同的单元arrays组合成一个
- Excel,根据条件在工作表之间复制单元格
- INDIRECT函数返回#REF
添加0在一个单元格的中间?
我知道热添加领先的0,但我想知道是否可以将它们添加到一个单元格的中间= 12个字符。 前两个字符总是会成为字母。 然后nummbers。
例
AB45686 = AB0000045686 DS456 = DS0000000456
使用LEFT和MIDparsingstring,然后使用文本添加所需的0:
=LEFT(A1,2) & TEXT(--MID(A1,3,LEN(A1)),"0000000000")
这是获得结果的另一种方式。
- Excel-从分数上的选票制作数组
- 具有刷新function的Power BI数据源
- 如果在列表中找不到类别,则Excel总计值(更好的编码方法)
- 使用在不同子函数中创build的对象数组
- 在Excel表格中移动范围/数组参考
- Excel SUMPRODUCT与dynamic列范围总和
- Apache POI:SXSSFWorkbook.dispose()不存在
- 从excel中读取数据到vector中
- 加快arrays公式
如果大于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,第二个公式将忽略它。
- Ruby Sketchup,从打开的Excel工作簿中获取一个值
- excel和机械特克
- 从电子表格或数据库文件中的大型数据集创build字典
- 将数组公式从MS Excel转换为Google表格
- 如果在列表中找不到类别,则Excel总计值(更好的编码方法)
- 嵌套如果陈述与这么多文本条件错误
- 有条件转置行到列
- 有没有办法将单独的Excel文件导入到主文档中
- 计算Excel VB数组列中非空字段的数量
如果是“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
。
你尝试的公式有几个问题:
- 这种公式只适用于一个单元格,但是包含整个范围(
Z2:Z19497
)而不是一个单元格(Z2
)。 - 您的
IF
语句具有“if true”部分(MID(Z2:Z19497,2,LEN(Z2:Z19497))
),但不包含“if false”部分。 这就是为什么你最终以FALSE
而不是Z2
中的值。 - 对于testing条件,使用
LEFT
比RIGHT
更容易。
请注意,当您复制公式时, Z2
会自动前进到Z3
, Z4
等
你的公式有几个问题。
首先,您正试图将公式应用于单元格Z2:Z19497
的范围。 相反,您需要分别评估每个单元格,检查Z2
是否以零开始, Z3
是否以零开始,依此类推。 如果您将公式添加到单元格AA2
某个位置,然后将其填充到AA19497
,那么您将在列AA
中具有不包含前导零的值列表。
下一个问题在你的IF
testing陈述中。 如果我们修改公式来查看一个单元格,它看起来像这样: 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
列中的值与数字混合在一起,则不起作用。
- 通过foreach循环从Excel导入
- 转换Excel文件的工具? (交换列,基本的string操作等)
- 间接行excel地址
- 如何通过偏移将列复制到数组?
- 如何在Excel下载压缩文件损坏警告?
- Excel中的影响排名
- 问题与数组/匹配/索引
- Node.js Web和移动应用程序 – 哪里可以读取excel文件?
- 使用Aspose格式化前导零
如果显示消息框并取消保存,则检查单元格= 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指出)
- Excel公式在命名时返回#value
- Excel在财政年度中的多种情景
- 从mule子esb操作Excel中的数据
- 从Excel到Access:格式化为破折号的零导致导入错误
- 在Swift中下载和处理.xls(Excel)文件
- 外推线性回归
- VLOOKUP未在数组中find值
- 要读取Excel,我们可以使用Spring批处理?
- 如果公式不起作用 – 尝试计算项目的正确运输成本(Excel)
添加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
,请在B1
input并复制下来:
=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)))
- SoftArtisans.OfficeWriter.Shared.SARuntimeException:不能有隐藏的工作表被选中
- 如何在Excel中返回来自多个条件的多个匹配的列标题?
- 使用Roo导入Excel文件,错误:不推荐将`packed`或`file_warning`作为单独的参数提供给`Roo :: Excel.new`
- 有没有办法将单独的Excel文件导入到主文档中
- Ruby on Rails和Axlsx – 关于build立大量数据的build议
- 数组公式,只返回1个具体的值
- 将Azure移动服务数据库连接到Excel
- 要读取Excel,我们可以使用Spring批处理?
- 如何在iOS应用程序中将数据写入Excel文件?
删除单元格内容如果“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)
或者,您可以取消选中“显示此工作表的显示选项”下的“在具有零值的单元格中显示零”选项。
- 循环浏览文件夹中所有Excel工作簿中的所有工作表,以更改所有单元格中文本的字体,字体大小和alignment方式
- Excel VBA – 数组公式忽略If语句
- 在电子表格中,如何删除一列中的条目,如果它们出现在另一列中?
- 具有4个条件的Excel IF语句
- 如何从不同的Excel文件和工作表导入数据到一个主要的Excel文件
- 如何从存储在数组中的单元格地址中select一组不相邻的单元格?
- 为什么在一个SUM中包装Excel数组公式不会产生这种情况下的内容总和?
- 图纸/范围数组循环制作graphics
- 在Excel中使用多个条件计数唯一
我如何摆脱我的公式结果中的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是要正确确定的。
- Ruby on Rails和Axlsx – 关于build立大量数据的build议
- 数组中的Foreach循环以及如何包含它
- 根据一个数字,列出x的一个字母。
- 如何find值并在VB中创build它们的数组excel?
- 如何从存储在数组中的单元格地址中select一组不相邻的单元格?
- Excel数据复制
- Excel VBAvariables数组可重用,必须被擦除?
- 在Excel中创build数组作为input
- 将Excel中列中的所有值乘以数字
无法将滑块控件的值更改为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(零):
- select与数组中的每个项目匹配的行
- 我如何编写一个Excel公式来比较年初至前几年,还要考虑闰年?
- 如何引用一个variables范围
- Excel:在另一个单元格中指定工作表名称用于识别公式
- Excel或R:重塑数据
- 如何将数据框转换为Python中的数组?
- Excelmacros的数字签名
- Excel导入无法识别表格
- 在IronPython中从Excel获取pathstring
从不包含帮助器列的数据透视表中排除具有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中包含新项目”。
- Apache POI:SXSSFWorkbook.dispose()不存在
- 如何在Excel VBA中切片数组?
- 具有刷新function的Power BI数据源
- Excel VBA – 在工作表中searchstring
- 生成N个随机数,其总和是一个常数K – Excel
- 无需编写文件coldfusion下载Excel表单查询结果
- 具有4个条件的Excel IF语句
- 比较Excel中具有相同含义的两个不同的句子
- 为什么将单元格内容设置为左alignment(Aspose Cells)?
如何计算值大于0的数据透视表的行数
我有一个SQL视图返回包含几个“值”列的行。 为了简单起见,我们称之为“ AmountA
,“ AmountB
和“ AmountC
。
我在Excel中使用数据透视表来为这些数据创build一个报告。 数据透视表的源范围通常使用.Netreflection生成,然后使用Excel Interop推送到Excel。 透视表也是使用Excel Interopdynamic生成/configuration的。
我需要计算并显示一个字段,它将计算AmountA
大于0的行数。对于AmountB
和AmountC
我也需要做相同的AmountC
。 结果应按照以下顺序显示在数据透视表中同一行级别上: AmountA
– CountA
– AmountB
– CountB
– AmountC
– CountC
。 为了更好地理解我想要完成什么,请考虑一个由count概括的数据透视表字段,但是其行为类似于COUNTIF
函数。 例如,如果组ProductX有10行,只有8行的AmountA
大于0,则应显示CountA
为8。
我已经尝试添加公式=IF(AmountA>0,1,0)
的计算字段,然后求和该字段,但似乎该公式应用于分组值,而不是每个行的实际AmountA
。 例如,如果组ProductX的Sum 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,
- “结尾”=一些大数字(下面的例子中放100)
- “By”=与上一步相同的大数字。
唯一的问题是您需要为每个variables(A,B和C)创build一个数据透视表。
看到下面的截图,更好的理解:
如果你隐藏D,E,H和I列,看起来你有期望的输出。
我终于辞去了新的列入侵定义类似于=IF(AmountA>0,1,0)
公式的源范围,然后在数据透视表中使用这些列与计数摘要。
- 相当于Excel中使用Pythonpandas的数组
- 将numpy数组转储到excel文件中
- 生成N个随机数,其总和是一个常数K – Excel
- 擅长匹配经纬度和长点
- 使用Excel在泡泡图的每个泡泡内绘制一张馅饼图?
- Excel,间接参考工作表范围
- 为Power Query中的string赋值
- 在Excel中创build数组作为input
- 具有刷新function的Power BI数据源
一个数组(0)给了我一个超出指定范围的值
我试图分配一些值给VBA中的数组,问题是,当我尝试打印每个数组的值时,我得到一个比预期更多的值,因为第一个值分配给头。
我有这样的价值观:
- A3 – 类别 (标题)
- A4 – 全球
- A5 – KAM
- A6 – 推销员
- A7 – 外部
- 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
由于Item
是Range
类的默认属性,因此可以在不明确使用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))
- 如何将Azure机器学习输出导出到CSV
- INDIRECT函数返回#REF
- Apache POI:SXSSFWorkbook.dispose()不存在
- 如何在Excel饼图中禁止类别为零值?
- 我想用ruby编辑格式良好的excel文件
- alignmentC中的数据集列
- 使用Aspose单元的同一个Excel工作表上的多组单选button
- IMEX = 1和TypeGuessRows = 0不适用于ZipCode
- CSV数据导出OTRS
将工作表名称从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)
- IF语句组合多个列
- 如何在iOS应用程序中将数据写入Excel文件?
- Excel的TDIST函数的伪代码实现
- 如何find值并在VB中创build它们的数组excel?
- 通过非迭代计算解决我的循环引用?
- Excel中不同时期的降雨总和,中位数和平均值
- 规范化权力查询中的csv字段(M)
- 问题与数组/匹配/索引
- 将Azure移动服务数据库连接到Excel
如何在产品中忽略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
。
- 为什么线性拟合的结果在R和Excel(Gnumeric Spreadsheet和WPS)中有相同的小数据?
- 如果公式不起作用 – 尝试计算项目的正确运输成本(Excel)
- IE自动化与数组
- 返回最后一个填充的单元格在可变范围内的值
- Excelmacros – 从数组中读取数据
- 使用Aspose格式化前导零
- 从多张纸中引用相同的单元格
- IronPython Excel RTDServer
- 加快arrays公式
当多列中的单元格为空或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
。
此外,closuresScreenUpdating
和Calculation
,系统地包含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
- 为什么将单元格内容设置为左alignment(Aspose Cells)?
- 循环并比较数组中的值
- Excel – sumifsdynamic数组文字
- 根据一个数字,列出x的一个字母。
- 用if函数检查相同的date
- 在Excel中获取多个input的多个结果
- 在导入Excel表格时从string末尾删除空格时出现不正常的行为
- 如何计算单元格数组中出现的string的实例
- 如何在Rails中上传和parsingExcel文件?
检查单元格范围是否有大于或小于0的数字
有没有一种方法可以在L列中识别C和K之间的单元是否包含大于或小于零的数字?
如果是,则返回TRUE,否则返回FALSE。 所以在示例图片中,行号4和6应返回FALSE,行号1,2,5应返回TRUE。
在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作为答案
- 数组中的Foreach循环以及如何包含它
- Json或Excel完整的企业分类文件
- 从多张纸中引用相同的单元格
- Power Query / Excel:DateTime.ToText()错误
- excel和机械特克
- 用多种标准汇总产品
- 如何将文本types持续时间数据转换为Excel中的时间数据格式?
- 保存一个大单元arrays作为单独的input文件MATLAB
- Perl:将数据从散列转储到Excel中
函数单独工作但不在一起,返回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)
- 间接自动完成的困境
- Rails不允许在大约60000个单元格中添加数据?
- 上传并读取excel文件,并使用groovy grails在数据库中插入数据
- 超链接到实际工作簿中的现有工作表
- Excel:间接() – 填写电子表格中其他指定工作表的汇总表
- 在Excel 2011中使用Applescript查找和replace
- Excel文本格式不适用于Office编写器报告
- 嵌套的IF / AND / OR语句
- 将包含“&”符号的公式插入到单元格中
值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值。
- 将非空数组值粘贴到Excel中
- 简单的Excel代码数组问题
- 如何将文本文件中的数据导入到Excel中?
- 通过http连接到Excel 2007中的SSAS 2005:如何让它询问用户名和密码?
- 如何根据Google电子表格中的单元格值返回两个数组之间的数组?
- 使用ColdFusion 8将图像添加到Excel文档中的行
- 从电子表格或数据库文件中的大型数据集创build字典
- 根据if语句更改评论
- Excel 2013中可以使用大型数据集吗?
遍历每一列并删除“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)中以进一步改进。
- 如何将文本types持续时间数据转换为Excel中的时间数据格式?
- 具有4个条件的Excel IF语句
- 如何将邮件项目导出到Excel文件
- 如果公式不起作用 – 尝试计算项目的正确运输成本(Excel)
- 在excel中生成一个真值表
- CF 10生成的电子表格将date显示为文本
- 在Excel中“饼图”中隐藏一系列数据标签
- 在excel上寻找租赁expression
- Rails +电子表格gem:如何推行成索引没有索引?
从行中获取值> 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)
- 在导入Excel表格时从string末尾删除空格时出现不正常的行为
- 问题与数组/匹配/索引
- 从excelfile upload产品
- (在Excel中)随机产生一个幂律分布
- Excel:如何从条件单元格返回评论
- 如何在Excel工作表中从多列中select一列的单元格
- 如何在Excel中擦除数据,特别是删除特定范围之外的极端exception值?
- Excel和使用桥表的多值维度
- VBA – 获取数组中第n个最大值的索引
如果公式结果为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)),""""))"
- 在Excel中的两个值之间生成一个正态分布的随机整数列表
- 如何将文本文件中的数据导入到Excel中?
- 如何在Rails中上传和parsingExcel文件?
- Excel – 每天从在线xls文件导入数据
- 在Excel表格中移动范围/数组参考
- 嵌套的IF / AND / OR语句
- 间接自动完成的困境
- 将某些颜色的单元格转移到其他Excel表单中
- 数组公式查找第二大数
保持/插入前导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都会显示:
- 拖动INDIRECT公式时如何更改单元格引用?
- 在Excel中区分零和空白
- 将excel读入从第5行开始并包含标题的python数据框
- 我怎样才能在Excel中逻辑testing另一个单元格的格式
- 通过http连接到Excel 2007中的SSAS 2005:如何让它询问用户名和密码?
- 用于大型数据格式化程序的Python垃圾回收器
- Excel计算左边的单元格的值,右边的单元格计算公式
- Excel中的影响排名
- Pentaho Data Inegration – 多个Excel文件input加载
索引匹配为空白单元格返回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 ;; –
- 为什么我的VBA数组内容在我想要重用时消失?
- 使用Aspose单元的同一个Excel工作表上的多组单选button
- 在excel上寻找租赁expression
- Excel – 只select一个最大值
- 如何根据Google电子表格中的单元格值返回两个数组之间的数组?
- 将所有工作表数据打印到用户表单文本框中
- 计算Excel VB数组列中非空字段的数量
- 在ruby中执行外部程序并等待执行
- 使用excel获取具有公式的单元格的内容
将单元格的值分配给多个单元格,直到剩余值为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
- Excel公式在命名时返回#value
- Excel是否评估提供给IF函数的结果参数?
- 可拖曳的间接Excel
- pandasExcel导入仅适用于单个函数调用 – 第二个函数调用时出错
- Rails不允许在大约60000个单元格中添加数据?
- 在Excel中使用间接公式来获得1 +单元格范围的乘积
- 这个值是什么意思是excel中的1.845E-07?
- 将“spinners”导入到Google文档中
- 拖动INDIRECT公式时如何更改单元格引用?
对于每个循环删除行,如果单元格= 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
其他答案在大多数情况下都是正确和有用的 – 自动过滤非常快速,而且在删除行时自底向上循环没有问题 – 但在某些情况下,您可能需要一个从上到下的循环。
在这种情况下,有两个重要的步骤:
- 删除后手动减less计数器variables,因为行号更改
- 使用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
- Excel和使用桥表的多值维度
- excel限制行限制。 我还可以创build一个大于限制的文件吗?
- 如何计算单元格数组中出现的string的实例
- 用ruby读取和写入相同的excel文件
- 间接参照总和范围
- 绘制直方图(更改轴)
- Excelmacros – 从数组中读取数据
- 通过Coldfusion禁用Excel错误检查
- 如何将文本types持续时间数据转换为Excel中的时间数据格式?
在错误转到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
来重置错误陷印。
检查这个答案,我发布了几个月前的更详细的解释。
- 我怎样才能在Excel中逻辑testing另一个单元格的格式
- 将包含“&”符号的公式插入到单元格中
- 根据if语句更改评论
- 如何引用VBA Max或Ubound函数的数组地址?
- 计算一个单位在游戏中的价值
- 将所有工作表数据打印到用户表单文本框中
- R将包含反斜杠的string从文件传递给charToRaw,而不会转义
- CSV数据导出OTRS
- VBA:基于另一个数组的filter数组
突出显示它是否是唯一不包含“0”的单元格
我在Excel中寻找一种方法来设置条件格式来帮助识别单个错误。 我们有一个包含一行值的Excel电子表格。 如果单个部分中只有错误,如下所示,则会突出显示:
*注意, 1
可能是2
,仍然是突出显示
但是,如果在不同部分有多个错误。 它不会突出显示,如下所示:
到目前为止我还没有find解决办法。
*编辑:看起来像我在正确的轨道上,现在感谢你们。 我想尝试这些解决scheme,但我现在必须运行。 当我第二次坐在我的电脑上时,我会试试看看它是否适合我。 那么我会接受一个答案。 再次感谢你们。
我想你想要的是在条件格式中的一个公式,例如=AND(COUNTIF($A1:$D1,0)=3,A1<>0)
。
(使用Excel 2007)
我认为0以外的数字表示错误?
您可以在条件格式中使用此公式:
=AND(A1<>0,COUNTIF($A1:$D1,"<>0")=1)
假定第一个值在单元格A1中。 您可以根据需要更改范围和单元格引用。
如果所有值都是零或正数,请尝试此公式用于第2行的条件格式设置
=AND(A2<>0,COUNTIF(2:2,">0")=1)
您可以复制到其他行或根据需要更改“应用于”范围
- Ruby不从excel文件input文本字段中的文本
- CF 10生成的电子表格将date显示为文本
- 循环并比较数组中的值
- Rails 4,axlsx和acts_as_xlsx:如何使每个列自己的工作表?
- 在excel中生成一个真值表
- 如何对Ruby中的Excel事件做出反应?
- 从excelfile upload产品
- 比较Excel中具有相同含义的两个不同的句子
- Excel的TDIST函数的伪代码实现
计数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确认
- 根据一个数字,列出x的一个字母。
- 相当于Excel中使用Pythonpandas的数组
- 将“spinners”导入到Google文档中
- 在Mac上的Excel 2011中的Un-Pivot表
- Rails Axlsx列宽和包装文本
- 为什么我的VBA数组内容在我想要重用时消失?
- 使用rubygem“creek”parsingexcel
- Excel如何返回符合一定条件的数组?
- Pentaho Data Inegration – 多个Excel文件input加载
如果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
它只是一次删除所有的范围(你想要删除)。
如果你有问题,就问吧 :)
- 用多个工作表输出一个Excel文件
- 在MATLAB中将不同的单元arrays组合成一个
- 在excel中生成一个真值表
- alignmentC中的数据集列
- 如果公式不起作用 – 尝试计算项目的正确运输成本(Excel)
- 通过foreach循环从Excel导入
- 如何在Excel下载压缩文件损坏警告?
- 与数组条件产生和
- Excel如何返回符合一定条件的数组?
从用户定义函数返回空实际返回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中从公式返回空单元格
- 我想上传一个Excel电子表格到IIS,然后导入其内容
- Rails:Excel列,种子
- 使用在不同子函数中创build的对象数组
- 置信区间
- Excel:在另一个单元格中指定工作表名称用于识别公式
- 在excel中build立一个二维数组
- Excel文本格式不适用于Office编写器报告
- 将包含“&”符号的公式插入到单元格中
- 将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对象。
- 图表中的Power Bidate
- Rails 4,axlsx和acts_as_xlsx:如何使每个列自己的工作表?
- Excel:总和除了前三名之外的其他值
- Excel将不会显示工作簿工作表
- 如何find值并在VB中创build它们的数组excel?
- Excel公式在命名时返回#value
- pandasExcel导入仅适用于单个函数调用 – 第二个函数调用时出错
- Rails:Excel列,种子
- 在Excel 2011中使用Applescript查找和replace
无法理解<> 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 <> b
是a is not equal to b
。 这将在C#中写成a != b
。
据我所知,使用<>
的唯一语言是VB / VbScript(这是Excel语法的基础),SQL,BASIC和Pascal。 在T-SQL中你可以使用!=
,但是它是非标准的SQL,因此<>
是首选。
- 用IF公式编程方式填充Excel单元不起作用
- 保存一个大单元arrays作为单独的input文件MATLAB
- 如何使用Spreadsheet gem编辑.xls中的标签?
- CF 10生成的电子表格将date显示为文本
- 间接行excel地址
- Google表格ARRAYFORMULA()与Excel {}有不同的结果?
- 混合编号和文本时出现意外的COUNTIF行为(EXCEL)
- 基于2个具有空值的数组进行计数
- 如何使用Groovy脚本在现有的Excel表单中编写响应
如果“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/是一个很好的地方来举办一个截图,很可能有更多的声誉的人会插入图像到你的问题为你。
IF语句的一个例子,如果value = 0,可以用来将计算添加到希望隐藏的单元格中,但是显示在另一个单元格值引用上。
= IF( /你的参考单元/ = 0,“”,SUM( /在这里你把你的SUM / ))
- 间接行excel地址
- 如何使用Groovy脚本在现有的Excel表单中编写响应
- Excel VBA – 在工作表中searchstring
- 如何使用Matlab在excel中编写多个数组
- 在Excel中使用间接公式来获得1 +单元格范围的乘积
- 分别为pandas中的列标题创build一个参数数组
- 将非空数组值粘贴到Excel中
- 列和行在xlsx文件中折叠
- 从excelfile upload产品
修剪尾随.0
我有一个包含部件号的Excel列。 这里是一个例子
正如你所看到的,它可以有很多不同的数据types: Float
, Int
和String
。 我正在使用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
尝试:
"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