我有一个崩溃我的Excel的代码,它从一张纸上获取数据并将其从表格视图转换为垂直.我认为它很慢,因为它将数据库视图从超过45k行.
有没有人有任何优化此代码的技巧?在next c
循环中崩溃我的excel
此外,我尝试在excel 2010中运行它,得到一个overflow
错误,但通常2010运行更好,2013年缓慢或没有响应.但我想让它在2013年工作.
Sub test()
Call ReversePivotTable("Sheet1", "A", "C", "Sheet2", "Name")
End Sub
Sub ReversePivotTable(source_sheet, from_col, to_col, target_sheet, Optional type_header = "type", Optional value_header = "value")
Application.ScreenUpdating = False
LAST_ROW = Sheets(source_sheet).Cells(Rows.count, 1).End(xlUp).Row
If LAST_ROW > 1 Then
Sheets(target_sheet).Cells.ClearContents
Else
Exit Sub
End If
pvt_type_col = Sheets(target_sheet).Range(to_col & 1).Offset(0, 1).column 'D
pvt_value_col = Sheets(target_sheet).Range(to_col & 1).Offset(0, 2).column 'E
'get headers
Sheets(source_sheet).Range(from_col & ":" & to_col).copy
Sheets(target_sheet).Range("A1").PasteSpecial xlPasteValues
Sheets(target_sheet).Cells(1, pvt_type_col).Value = type_header
Sheets(target_sheet).Cells(1, pvt_value_col).Value = …
Run Code Online (Sandbox Code Playgroud) 我正在尝试将代码升级到python3。这行遇到了一些麻烦,
output_file = open(working_dir + "E"+str(s)+".txt", "w+")
output_file.write(','.join(headers) + "\n")
Run Code Online (Sandbox Code Playgroud)
并得到这个错误 TypeError: sequence item 0: expected str instance, bytes found
我尝试过的
output_file.write(b",".join(headers) + b"\n")
TypeError: write() argument must be str, not bytes
Run Code Online (Sandbox Code Playgroud)
香港专业教育学院也尝试decode()
在联接上使用,也尝试使用r
和w+b
打开。
如何str
在python 3中转换为?
导入 csv 文件时出现错误:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa0 in position 15: invalid start byte
追溯:
Traceback (most recent call last):
File "<ipython-input-2-99e71d524b4b>", line 1, in <module>
runfile('C:/AppData/FinRecon/py_code/python3/DataJoin.py', wdir='C:/AppData/FinRecon/py_code/python3')
File "C:\Users\stack\AppData\Local\Continuum\anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 786, in runfile
execfile(filename, namespace)
File "C:\Users\stack\AppData\Local\Continuum\anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 110, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "C:/AppData/FinRecon/py_code/python3/DataJoin.py", line 500, in <module>
M5()
File "C:/AppData/FinRecon/py_code/python3/DataJoin.py", line 221, in M5
s3 = pd.read_csv(working_dir+"S3.csv", sep=",") #encode here encoding='utf-16
File "C:\Users\stack\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\io\parsers.py", line 702, in parser_f
return _read(filepath_or_buffer, kwds)
File "C:\Users\stack\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\io\parsers.py", line …
Run Code Online (Sandbox Code Playgroud) 我在下面看到的列中有以下类型的字符串。我想解析_
每个字符串的最后一个之后的所有内容,如果没有,_
则保留字符串原样。(因为我下面的尝试只会排除没有 no 的字符串_
)
到目前为止,我已经在下面尝试过,在这里看到:Python pandas: remove everything after a delimiter in a string。但它只是在第一次之后解析出所有内容_
d6['SOURCE_NAME'] = d6['SOURCE_NAME'].str.split('_').str[0]
以下是我的 SOURCE_NAME 列中的一些示例字符串。
Stackoverflow_1234
Stack_Over_Flow_1234
Stackoverflow
Stack_Overflow_1234
Run Code Online (Sandbox Code Playgroud)
预期的:
Stackoverflow
Stack_Over_Flow
Stackoverflow
Stack_Overflow
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激。
我无法在我的代码中实现以下if语句:
IF(O3<0,"Y",N")
Run Code Online (Sandbox Code Playgroud)
有人可以帮助改变我的代码以包含这个if语句吗?这是我尝试过的:
If Range("O3:O4183") < 0 Then Range("P3").Value = "Y"
Worksheets("Sample File").Range("P3:P4183").FillDown
ElseIf Range("O3:O4183") > 0 Then Range("P3").Value = "N"
Worksheets("Sample File").Range("P3:P4183").FillDown
End If
Run Code Online (Sandbox Code Playgroud)
完整代码:
Sub stackoverflow()
Dim rng As Range
''sample file creation
''values
Range("A3").Value = "CSH" ''hardcode
Worksheets("Sample File").Range("A3:A4183").FillDown
Set rng = Worksheets("File").Range("C2:C4182")
Worksheets("Sample File").Range("B3").Resize(rng.Rows.Count, rng.Columns.Count).Cells.Value = rng.Cells.Value
Set rng = Worksheets("File").Range("D2:D4182")
Worksheets("Sample File").Range("C3").Resize(rng.Rows.Count, rng.Columns.Count).Cells.Value = rng.Cells.Value
Range("D3").Value = "1" ''hardcode
Worksheets("Sample File").Range("D3:D4183").FillDown
Set rng = Worksheets("File").Range("E2:E4182")
Worksheets("Sample File").Range("E3").Resize(rng.Rows.Count, rng.Columns.Count).Cells.Value = rng.Cells.Value
Set rng = Worksheets("File").Range("E2:E4182")
Worksheets("Sample …
Run Code Online (Sandbox Code Playgroud) 我想循环我的范围并合并逻辑,如果B2:B100为"否",则跳过.
原始代码:
Dim cell As Range
For Each cell In Range("A2:A100")
FilePaths.Add cell.Value
Next cell
Run Code Online (Sandbox Code Playgroud)
试:
If cell.Range("B2:B100") <> "Yes" Then
Run Code Online (Sandbox Code Playgroud)
不确定下一步该去哪里.我想去col A的下一个单元格,或者继续回到col A.
我想做:如果一列包含 values ,然后将更改应用于 joinkey 列,如果列包含不同的值,然后将不同的更改应用于 joinkey 列等。
如果 df.loc[df['product'].isin('value1','value2')
那么df['joinkey'] = df['joinkey'] + variable1
然后重复
如果 df.loc[df['product'].isin('value3','value4')
那么df['joinkey'] = df['joinkey'] + variable2
希望这是有道理的,任何帮助将不胜感激。
谢谢。
我有代码解析字符串上的最后一个单词.即.Stack/Over/Flow会给我"Flow".
但我希望得到"Over/Flow".
这就是我得到的,但只能得到"流动"
arr(counter - 2) = "'" & mid(Text, InStrRev(Text, "/") + 1) & "'"