Excel 我可以使用IF和Else来定义字符串吗?
我想根据其中一个单元格中的数据使用文件名保存工作簿。 这并不太难,但我想使用三个字符的代码,而不是原始的完整单元格内容 因此,如果单元格F2包含“美国”,则Dim=“USA”Excel 我可以使用IF和Else来定义字符串吗?,excel,vba,Excel,Vba,我想根据其中一个单元格中的数据使用文件名保存工作簿。 这并不太难,但我想使用三个字符的代码,而不是原始的完整单元格内容 因此,如果单元格F2包含“美国”,则Dim=“USA” 否则,如果包含“大不列颠”,则为“GBR” 否则,如果包含“India”,则为“IND” 还有“日本佬” 然后在底部: Save as `Filename:="C:\My documents\"` & Dim from above & "File" & Format(date, "yyy
否则,如果包含“大不列颠”,则为“GBR”
否则,如果包含“India”,则为“IND”
还有“日本佬” 然后在底部:
Save as `Filename:="C:\My documents\"` & Dim from above & "File" &
Format(date, "yyyymmdd") & ". xlsx"
因此,文件名取决于F2单元格内容的缩短版本
Sub BACS()
'
' BACS Macro
'
'
Windows("Book1").Activate
Sheets.Add After:=ActiveSheet
Sheets("Sheet1").Select
Columns("I:I").Select
Selection.Copy
Sheets("Sheet2").Select
Columns("A:A").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Selection.NumberFormat = "000000"
Sheets("Sheet1").Select
Columns("H:H").Select
Selection.Copy
Sheets("Sheet2").Select
Columns("B:B").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Selection.NumberFormat = "00000000"
Sheets("Sheet1").Select
Columns("L:L").Select
Selection.Copy
Sheets("Sheet2").Select
Columns("C:C").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Sheet1").Select
Columns("N:N").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet2").Select
Columns("D:D").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Sheet1").Select
Columns("J:J").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet2").Select
Columns("E:E").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Selection.NumberFormat = "#,##0.00"
Rows("1:1").Select
Selection.Delete Shift:=xlUp
Cells.Select
Selection.Replace What:="/", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="&", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="(", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:=")", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Sheets("Sheet2").Select
Sheets("Sheet2").Move
ChDir "C:\Users\Desktop"
ActiveWorkbook.SaveAs Filename:= _
"C:\Users\Desktop\” &
IF Sheet1.Range(“F2”).Value = “United States” Then
Debug.Print “USA”
ElseIf Sheet1.Range(“F2”).Value = “Great Britain” Then
Debug.Print “GBR”
ElseIf Sheet1.Range(“F2”).Value = “India” Then
Debug.Print “IND”
Else
Debug.Print “JAP”
End If
& “ IMPORT BACS " & Format(Date, "yyyymmdd") & ".csv", FileFormat:= _
xlCSV, CreateBackup:=False
End Sub
也许你可以试试这样的东西: 这是如何工作的 首先,我们将代码初始化为JAP,然后我们将检查F2的值是否等于美国、英国或印度,如果它等于其中一个,则代码将被更新,例如美国
Sub tryme()
Dim Code As String
Code = "JAP"
If Cells(2, "F").Value = "United States" Then Code = "USA"
If Cells(2, "F").Value = "Great Britain" Then Code = "GBR"
If Cells(2, "F").Value = "India" Then Code = "IND"
With ActiveWorkbook
.SaveAs Filename:="C:\My documents\" & Code & "File" & Format(Date, "yyyymmdd") & ". xlsx"
End With
End Sub
注意:如果要对F列的每个单元格执行此操作,则必须使用循环
您还需要避免选择您的宏将更快 更改:
- 图纸名称
您可以使用
Select Case
Option Explicit
Sub test()
Dim Country As String, Abbreviation As String
With ThisWorkbook.Worksheets("Sheet1").Range("F2")
Country = .Value
Select Case Country
Case Is = "United States"
Abbreviation = "USA"
Case Is = "Great Britain"
Abbreviation = "GBR"
Case Is = "India"
Abbreviation = "IND"
Case Else
Abbreviation = "JAP"
End Select
Debug.Print Abbreviation
End With
End Sub
@高性能标记可能是一些VBA for Excel。但是你是对的,标记需要正确设置。这是VBA for Excel。你已经知道如何获取单元格F2的内容了吗?你可以通过两种方式获得它。1) 设置一个包含缩短版本的附加列,然后在其中引用代码。2) 在后台执行此操作,但我建议您使用
Select Case
。欢迎来到stackoverflow。另外,请包括您为解决您的问题所做的尝试(您编写的代码),以便我们只关注特定问题。查看这些代码!!你需要摆脱所有的选择和激活。
Option Explicit
Sub test()
Dim Country As String, Abbreviation As String
With ThisWorkbook.Worksheets("Sheet1").Range("F2")
Country = .Value
Select Case Country
Case Is = "United States"
Abbreviation = "USA"
Case Is = "Great Britain"
Abbreviation = "GBR"
Case Is = "India"
Abbreviation = "IND"
Case Else
Abbreviation = "JAP"
End Select
Debug.Print Abbreviation
End With
End Sub