将所有非空白行快速移动到ws顶部

我试图将所有非空白行移动到我的工作表顶部(实际上是一个自动Autofilter的顶部)。 我已经意识到,简单地删除空行是非常缓慢的,而且更快的替代方法是将范围分配给变体。 我已经拿出这个代码,但是由于某种原因,它正在失去一些行: Public Sub CompactRows(ByRef ws As Worksheet) Dim a As Variant With ws a = .AutoFilter.Range.Offset(1, 0).Columns(1).SpecialCells(xlCellTypeConstants).EntireRow .AutoFilter.Range.Offset(1, 0).Clear .AutoFilter.Range.Cells(2, 1).Resize(UBound(a), .UsedRange.Columns.Count) = a End With End Sub 所以,如果我有1000行,以空行分隔,创build100个子范围,function结束后,我只有100行(其他900丢失)。 我注意到在这种情况下Ubound(a)也返回100.我的理论是它只复制每个子范围中的第一行,但我不确定。 任何解决这个问题,或另一个更快的替代scheme,以达到同样的结果,将不胜感激。

在导入时将variables设置为FileName

我正在使用下面的代码一次从文件夹中导入多个.XLSX文件。 它工作的很好,除非我不能区分每个文件一旦被导入和合并。 每个Excel文件都是特定年份的数据,我需要知道分析的年份。 有没有什么办法可以在每次导入时创build一个与文件名相同的variables,这样我就可以在合并后区分这些文件? 我已经完成了很长的一步,通过单独导入每个文件并在合并之前在每个数据集中创build一个variables,但是我正在寻找更快的方法来完成此操作。 filename indata pipe 'dir X:\"Projects"\"Source Data" /b '; /* put all the .xlsx file names in dataset file_list */ data file_list; length fname $200 in_name out_name $200; infile indata truncover; input fname $ 200.; in_name=translate(scan(fname,1,'.'),'_','-'); out_name=cats('_',in_name); run; data _null_; set file_list end=last; call symputx(cats('dsn',_n_),in_name); call symputx(cats('outdsn',_n_),out_name); if last then call […]

从Excel文件读取

我正在尝试从具有四列和121行的Excel文件读取。 我试过.csv的想法,但我想我理解错了,因为当我编译这个时,它会变得混乱起来。 如何确保城市获得第一个单元格,国家获得第二,第三个获得第三个,第四个获得第四个? #include "stdafx.h" #include <iostream> #include <fstream> #include <string> using namespace std; int main() { ifstream inFile; string city; string country; string lat; string lon; inFile.open("worldcities.csv"); if (inFile.is_open()) { cout << "File has been opened" << endl; } else { cout << "NO FILE HAS BEEN OPENED" << endl; } while (!inFile.eof()) { […]

数组值不转置给单元格

我正试图学习如何在Excel VBA中使用字典。 testing是通过一个数组将字段A中1-100000行的所有值传递给一个字典,然后将所有值写入列B.这个工作正常,直到行34464,B列中的其余行得到#N/A 任何想法为什么? Sub nnn() 'Tools – References – Microsoft Scripting Runtime Dim myArray As Variant Dim myRow As Long Dim dicMyDictionary As Scripting.Dictionary Set dicMyDictionary = New Scripting.Dictionary With ThisWorkbook.Worksheets("Sheet1") myArray = Range(Cells(1, 1), Cells(100000, 1)).Value For myRow = LBound(myArray, 1) To UBound(myArray, 1) dicMyDictionary.Add myRow, myArray(myRow, 1) Next myRow myArray = dicMyDictionary.Items […]

使用jxl读取Excel工作表不能工作超过255行

我尝试阅读使用jxl jar旧格式的Excel表,它工作正常,但在255行后抛出错误: java.lang.ArrayIndexOutOfBoundsException: 255 我不能用Poi jar阅读,因为它是旧的格式,任何帮助非常感谢! 下面是下面给出的Java代码片段: public HashMap<String, Float> readAllRowsOnePoint(String path, String sheetname) throws BiffException, IOException { System.out.println("Path download" + path); FileInputStream fs = new FileInputStream(path); Workbook wb = Workbook.getWorkbook(fs); Sheet sheet = wb.getSheet(sheetname); // To get the number of rows present in sheet int totalNoOfRows = 500; System.out.println("The rows count is " + […]

剪切并复制特定的string值到相邻的单元格

我在同一个单元格中有一个公司名称和城市名称的Excel数据库,我想将城市名称拆分到find文本的相邻单元格。 我有一个数组的城市名称。 数据库看起来像: FINER附近EL CAJON 第一个selectpipe道系统RAMONA FRANK GILILLAND施工SANTA YNEZ 等等 我的代码到目前为止(非常基本): Sub FindCityNames() Dim citylist(500) As String Dim i, j, k As Integer For j = 1 To 500 citylist(j) = Workbooks("cities.xlsm").Worksheets("City list").Cells(j, 1) Next j For i = 1 To 500 Cells.Find(What:=citylist(i), After:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False).Activate ActiveRange.Cut Next i […]

使用工作表1中的值,search工作表2,并将工作表中的值作为工作表3返回

这个问题我在第2页有一堆数据。大约有6k行。 我有一些437我想find。 这些在表1(A栏)中有规定。 对于这些我想复制整个行,并将其放置在工作表3中。工作表1中的值可以在工作表2中多次find,我需要他们。 我的解决scheme,我发现VBAsearch这一切。 但是在437点停止。 Public Sub findfak() Dim lastRowS1 As Long Dim lastRowS2 As Long Dim lastRowS5 As Long Dim i As Long Dim j As Long Dim tempS1 As Long Dim temps2 As Long Dim tempRow As Long lastRowS1 = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row lastRowS2 = Sheet2.Cells(Rows.Count, 1).End(xlUp).Row Application.ScreenUpdating = False For i = […]

为什么我添加和条件在中频function不起作用?

我有下面的表格,我用{=MAX(IF(M21:M28=1,N21:N28))}来得到最大值,根据相同的1号,它给出了正确的值99915如果我想添加另一个条件,例如相同的name=hao和相同的No=1 。 我应该得到916 。 这是我在这里使用的,但给我0 。 不知道为什么? 谢谢 {=MAX(IF(AND(M21:M28=1,L21:L28="hao"),N21:N28))} Name No Value hao 1 10 hao 1 11 rui 2 12 rui 1 213 alvin 2 14 alvin 1 99915 hao 1 916 hao 3 9917

将两张纸上的数据合并成正确的行

我有两个Excel表格,数据类似于: SHEET 1: ABC 1 Josh 30 Austin 2 Sam 28 SF 3 Mary 35 Chicago SHEET 2: AB 1 Josh Car 2 Mary Truck 3 Sam Van 我试图做的是将两个基于列A合并。例如,结果将是: ABCD 1 Josh 30 Austin Car 2 Sam 28 SF Van 3 Mary 35 Chicago Truck 我试着挖掘微软网站上的Excel支持,但我没有得到任何地方。 最初我以为这将与数据>整合function有关,但似乎并没有工作。

PHPExcel – 使列不丢弃前导零

我目前正在运行代码来获取一个.csv文件,该文件每天都会被创build并正在使用; 作为分隔符,并将其导出到Excel电子表格中。 代码如下: $xlFileName = $outDir."output_".date("njY").".xls"; require_once 'PHPExcel_1.8.0_doc/Classes/PHPExcel/IOFactory.php'; $objReader = PHPExcel_IOFactory::createReader('CSV'); $objReader->setDelimiter(";"); //$objReader->setInputEncoding('UTF-16LE'); $objPHPExcel = $objReader->load($todayFileName); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save($xlFileName); 我遇到的这个问题是,一列是邮政编码,可以从0开始。有没有什么办法可以告诉PHPExcel不要丢弃该特定列中的前导零? 编辑: 示例csv内容: Date;Zip Code;Data;Data;Data 10/12/2015;01234; Some Data ; More Data ; More Data 10/12/2015;12345; Some Data ; More Data ; More Data 10/12/2015;23456; Some Data ; More Data ; More Data 10/12/2015;34567; Some […]