如何使用自定义模块在数字之间添加逗号

我有一个自定义模块创build一个名为“Myvlookup”的function,其function类似于VLOOKUP,但在一个单元格中输出多个数字。 这里是代码: Function MYVLOOKUP(lookupval, lookuprange As Range, indexcol As Long) Dim r As Range Dim result As String result = "" For Each r In lookuprange If r = lookupval Then result = result & " " & r.Offset(0, indexcol – 1) End If Next r MYVLOOKUP = result End Function 这是行得通的,但我想知道我可以改变它,所以我可以在数字之间加一个逗号。 我试图在“”之间添加它,但是在第一个数字之前创build了一个逗号,并且想知道是否有添加另一个可以摆脱第一个逗号的方法。

在Excel中复制现有的表格显着减慢我的VBA代码

我一直在build立一个程序来创build发票依赖于我的公司正在与之交互的客户/业主的数量。 对于每一个客户,我们可能有多个所有者,我们所做的是为每个所有者创build一个单独的发票。 我的问题是,代码被devise为复制模板,然后相应地编辑它,这个复制过程减慢了我的代码在10到20秒之间(我在代码中有一个计时器)。 有没有其他办法可以更有效地做到这一点? 我在工作表中有一张图片,当我只是尝试创build一个新工作表,然后从模板工作表中复制/粘贴时,工作表中的图片不能很好地复制。 任何其他的想法? 谢谢! 编辑: Private Sub CommandButton1_Click() Dim t As Single t = Timer Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Sheets("Client Invoice Template").Visible = True Sheets("Client Invoice Template").Visible = True Sheets("Client Invoice Template").Copy Before:=Sheets(3) Sheets("Client Invoice Template (2)").Name = "Client Invoice" Sheets("Client Invoice Template").Visible = False Sheets("Select").Select Application.Calculation = xlCalculationAutomatic MsgBox […]

在Excel中使用不同types的信息在每一行中读取一列

我想用我编写的程序读取Excel文档,并根据读取的信息,更改我的用户界面上的某些字段,我遇到了一个有趣的问题。 我的一个专栏有可能保存4种不同types的数据。 行中的每个单元格都可能包含一个数字,一个以文本或文本forms存储的数字。 这是我用来阅读本专栏的部分代码: try { string dtTerritory = dt.Rows[0].Field<string>("Territory"); cmbTerritory.SelectedItem = dtTerritory; territory = dtTerritory; } catch { double dtTerritory = dt.Rows[0].Field<double>("Territory"); cmbTerritory.SelectedItem = dtTerritory.ToString(); territory = dtTerritory.ToString(); } 我遇到的问题是读取以文本forms存储的数字,问题是,如果数字以Excel文档forms存储在Excel工作表中,则始终以3个字符存储。 所以如果数字是3,那么如果它是46,则它被存储为“3”(3之后2个空格),它被存储为“46”(46之后1个空格)。 所以我基本上是寻找最好的解决scheme,我可以让我的程序忽略号码后发生的空间。 有任何想法吗?

澄清INDEX MATCH公式中的参数

我正在通过其他人创build的电子表格工作,并且在一个工作表中,列A具有用下面的公式获得的值; =INDEX(Sites!A$2:AC$10000,MATCH(F2,Sites!P$2:P$10000,FALSE),3) 我很困惑这个公式,并想知道有人能为我澄清请。 我从来没有使用过一个INDEX MATCH公式,当我google的时候,没有例子在结束值之前使用FALSE或者TRUE,在这个例子中是“3”。 另外,如果最后的值是“3”或查找范围中的第三列 – 当P $ 2:P $ 10000只有一列P列时,这怎么可能? 这是工作表的屏幕图像

如何将值(不只是百分比)添加到Excel饼图?

我有这个代码: private void WriteChartSheet() { _xlSheetChart = (Worksheet)_xlSheets.Item[2]; if (_xlSheetChart != null) { _xlSheetChart.Name = ProduceUsageChartSheetName; // Contract vs. non-Contract pie chart _xlSheetChart.Cells[1, 1] = "Contracted Items"; _xlSheetChart.Cells[1, 2] = "Non-Contracted Items"; _xlSheetChart.Cells[2, 1] = GetContractedItemsTotal(); _xlSheetChart.Cells[2, 2] = GetNonContractedItemsTotal(); ChartObjects xlCharts = (ChartObjects)_xlSheetChart.ChartObjects(Type.Missing); ChartObject contractChartObject = xlCharts.Add(0, 0, 300, 250); // left, top, width, […]

分组数据表

我在Excel文件中有以下表格: customer ID sell attribute1 attribute2 attribute3 …… attribute N Customer1 sell1 1 0 1 1 Customer1 sell2 0 0 0 0 Customer1 sell3 1 0 1 1 Customer2 sell4 0 0 0 1 Customer2 sell5 1 0 1 0 Customer3 sell6 1 0 0 0 …… …… 我需要一个Excel VBA函数来删除多余的客户行,并为每个客户只产生一行代表该客户的所有列值…(每列的最大值只产生该列中的最大值),列出售其不考虑在最后的结果。 结果如下: customer ID attribute1 attribute2 […]

检查一个Excel工作表是否受保护并find密码(使用apache poi)

我需要执行以下操作: 用户下载Excel文件(这是一个模板)与一些列只读和其他可编辑;(只读列是通过保护整个表 //protect entire sheet sheet.protectSheet("password"); //create style for editable cells XSSFCellStyle editableStyle = workbook.createCellStyle(); editableStyle.setLocked(false); //for editable cells apply this style cell.setCellStyle(editableStyle); 用户修改模板文件,只填充可编辑的单元格 用户上传模板 在上传模板期间,我需要检查上传的文件是否是之前下载的文件,使用完全相同的“密码”进行保护。 我有可能获得密码,但它是编码,我不知道如何解码。 byte[] password = sheet.getCTWorksheet().getSheetProtection().getPassword(); 你能帮我么?

无法使用devise器和inputVBA代码

有人可以帮我把我的用户表单从cal工作表中提交到这个表中吗? Private Sub cmdbutton_submitform_Click() Dim emptyRow As Long 'Make Sheet2 active Sheet2.Activate 'Determine emptyRow emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1 'Transfer information Cells(emptyRow, 1).Value = txtbox_number.Value Cells(emptyRow, 2).Value = txtbox_rank.Value Cells(emptyRow, 3).Value = txtbox_Name.Value Cells(emptyRow, 4).Value = txtbox_height.Value Cells(emptyRow, 5).Value = txtbox_weight.Value Cells(emptyRow, 6).Value = txtbox_right_rm.Value Cells(emptyRow, 7).Value = txtbox_left_rm.Value End Sub

如何防止Excel在粘贴时将行数据合并到单个单元格中?

我有两个电子表格,我正在复制行之间。 我有一个单独的工作簿中的macros保持打开状态,同时打开和closures包含电子表格的源和目标工作簿。 我将select目标行 rows(activecell.row).copy 然后,我将closures源工作簿,因为它的名称与目标工作簿完全相同,请在另一个文件夹中打开目标工作簿并执行 activesheet.pastespecial ' this line copied from record macro generated code 有时它可以正常工作,其他时候,源行将被挤压到行的第一个单元格中,有时我会收到一条错误消息,指出对象不支持pastespecial。 我不能告诉我是不是搞乱了副本没有指定我的意思是复制整个行,或者如果我需要以某种方式指定源数据是从另一个工作簿和粘贴function应该将数据视为行的价值的数据,而不是单个单元的价值。 如上所述,我复制了从我使用“录制macros”function生成的macrosExcel中的pastespecial行,并手动执行行复制。 万一重要,这是整个例程。 Sub copyStudentsToEmail(emailApacket) ' copies student records to email Dim cel, nameCel, sourcePath As String Rows(ActiveCell.Row).Copy sourcePath = ActiveWorkbook.FullName ActiveWorkbook.Close (True) Workbooks.Open ThisWorkbook.path & "\\email\\records.xls" ' search for bottom row Range("a1").Select While ActiveCell.Value <> "" ActiveCell.Offset(1, 0).Select […]

运行时错误1004对象“_Worksheet”的方法“范围”失败

我正在尝试将大量的工作表合并到一个新工作表中。 我真的很感激任何意见。 问题是与线: wsSrc.Range("A1", wsSrc.Range("D", lastRow)).Copy Destination:=rngDest 当我尝试运行时会导致错误。 我以前一直在使用代码将所有表单合并到工作表摘要,这是macros的button被创build的工作正常。 Sub mcrCombine() ActiveWorkbook.Sheets.Add.Name = "Combined" 'Create new sheet 'Definitions Dim wsSrc As Worksheet Dim wsDest As Worksheet Dim rngDest As Range Dim lastRow As Long Dim destRow As Long Set wsDest = Worksheets("Combined") 'Destination sheet in same Workbook Set rngDest = wsDest.Range("B1") 'Destination cell in Combined […]