簡體   English   中英

如何在Excel中比較字符串列表中的字符串

[英]How to compare a string within a string list in Excel

嗨,大家好,我正在嘗試在Excel中編寫if語句,但找不到正確的方法來制作所需的東西

I2和J22之間有一些食物名稱和價格。 例如,AYÇICEKYAĞI(英語中的SUNFLOWER OIL)為每公斤4 $。 在工作表的左側,您可以看到其他列表。 我需要的是

我想將所有A *列與I2:I22之間的字符串進行比較,並獲取寫在J2:J22之間的價格,然后將其寫入D *列。

有超過500行,我需要對所有行都執行此操作。

如您所見,以粗體顯示的有些標題應予以保護。

您似乎想出了一個公式; 現在您需要一種分配它的方法。 您的工作表設計不適合簡單地填寫公式。 但是,由於C列中的數字標識了D列和E列中需要公式的有效條目,因此一個簡短的子過程可以快速地將公式放入正確的位置。

Sub fillFormula()
    Dim w As Long, vWSs As Variant, vFRMLs As Variant

    vWSs = Array("ogle_aksam_gramaj", "kahvalt" & ChrW(305) & "_gramaj", _
                 "araogun_gramaj")

    For w = LBound(vWSs) To UBound(vWSs)
        With Worksheets(vWSs(w))
            With .Columns(3)   '<~~ going to look at column C for numbers
                With .SpecialCells(xlCellTypeConstants, xlNumbers)
                    .Offset(0, 1).FormulaR1C1 = _
                        "=IFERROR(VLOOKUP(RC1, 'urunler'!C1:C2, 2, FALSE), """")"
                    .Offset(0, 2).FormulaR1C1 = _
                        "=IFERROR(RC4*RC3, """")"
                End With
            End With
        End With
    Next w
End Sub

IFERROR函數已用於“包裝”查找和多重復制公式。 它捕獲錯誤並提供替代結果; 在這種情況下,零長度的字符串看起來空白。

kahvaltı_gramaj工作表由於Unicode字符而導致VBA中出現問題。 您可以嘗試其他方法循環瀏覽工作表。

gamaji

二進制(啟用宏)的工作簿可以從我自己的公共Dropbox的位置

在您附加的工作簿中,如果沒有可用值, VLOOKUP將返回VLOOKUP #N/A

在工作表ogle_aksam_gramaj單元格D4中,使用以下公式:

=SUMIF($I:$I,$A4,$J:$J)

然后,您可以將其向下拖動,它應該根據同一張表中提供的詳細信息為您提供價格(范圍I:J)

總和的好事(或不好,取決於您)是:如果沒有總和,它將返回0。 在工作表中,項目在列表中必須唯一,否則,它將繼續對每個實例進行求和。 因此,如果AYÇICEKYAĞI存在2次,則將其相加兩次。

您可以將“高級過濾器”與(僅唯一值)一起使用,以確保所有成分都被考慮並且僅被提及一次。

謝謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM