Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 我可以使用IF和Else来定义字符串吗?_Excel_Vba - Fatal编程技术网

Excel 我可以使用IF和Else来定义字符串吗?

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

我想根据其中一个单元格中的数据使用文件名保存工作簿。 这并不太难,但我想使用三个字符的代码,而不是原始的完整单元格内容

因此,如果单元格F2包含“美国”,则Dim=“USA”
否则,如果包含“大不列颠”,则为“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