7

グーグルで調べてみましたが、何も見つかりませんでしたが、間違った場所を探しているだけかもしれません。私はVBAにもあまり精通していませんが、正しいポインターでそれを理解できると確信しています:)

さまざまな条件に基づいて、さまざまなセルを連​​結した文字列を作成しています。これらを順番に叩きます。

=IF(A405<>A404,G405,G405&H404)

私がやりたいことは、連結されたリストに戻って、superseder がリストにある場合は、superseded 値を削除することです。

たとえば、次のリストを参照してください。

A, D, G, Y, Z

存在するD 場合のみ 削除したい。 Y

これについてどうすればいいですか?(VBAまたはインセルですが、インセルの方が好きです)

4

7 に答える 7

5

試す:

=IF(ISERROR(FIND("Y",A1)),A1,SUBSTITUTE(A1,"D, ",""))

ただし、これは、D の後に常にコンマとスペースがあることを前提としています。

于 2008-11-04T20:36:58.807 に答える
2

まず、すべてのセルを調べて、最後にすべてを連結するときに、代わりに文字列配列を保持してみませんか?

それ以外の場合は、INSTR や MID などの文字列関数を使用して、次のようなことを行います。

start1 = instr(myLongString,"Y, ")
if start1 > 0 Then
    start2 = instr(myLongString,"D, ")
    if start2 > 0 then
        newLongString = left(myLongString, start2 - 1) & _
                        mid(myLongString, start2 + 3)
    end if
end if

しかし、私が言ったように、ループしやすい配列を保持し、使用することがわかっているすべての値を取得したら、最後にそれらを連結するだけです。

于 2008-11-04T20:06:28.027 に答える
1

VBA : 正規表現オブジェクトはいつでも使用できます。正規表現を正しく構築する限り、スクリプトで何でもテストできるようになると思います。

チェックアウト: http://msdn.microsoft.com/en-us/library/yab2dx62(VS.85).aspx (正規表現参照用)
および正規表現をテストするための簡単なツール: http://www.codehouse.com /webmaster_tools/regex/

セル内: より Excel に適した方法で実行できます
。列 A:A に値があるとします。
チェックを実行する場所
if(indirect("A"&row()) <> indirect("A"&row()-1), indirect("G"&row()), indirect("G"&row())& indirect("H"&row()))
または値が何であれ、新しい列を追加できます。ただし、if ステートメントの 1 つのブランチでは、値を空白にする必要があると思います。その後、B:B 列の値のみを連結します (必要に応じて空白をスキップします)。

お役に立てれば。

于 2008-11-06T07:00:08.783 に答える
0

私もこれを可能な解決策として電子メールで入手しました:

=IF(A15<>A14,G15,IF(OR(AND(G15="CR247, ",ISNUMBER(FIND("CR247, ",H14))),AND(G15="CR149, ",ISNUMBER(FIND("CR215, ",H14))),AND(G15="CR149, ",ISNUMBER(FIND("CR180, ",H14))),AND(G15="CR180, ",ISNUMBER(FIND("CR215, ",H14))),G15="CR113, "),H14,G15&H14))

(これには、優先ルールを持つ「実際の」値があります)

@Josephの答えに比較的似ています。

より良い解決策はありますか?

于 2008-11-04T20:48:12.573 に答える
0

削除したいこれらの組み合わせがあまりない場合は、=IF(FIND("D"; A2)> 0; REPLACE(A2;1;3;"");A2) を使用できます。

于 2008-11-04T21:37:20.573 に答える
0

末尾から始めて、文字列の先頭に追加し、Y が存在しない場合にのみ D を追加する方がおそらく簡単です。

于 2008-11-04T20:04:24.333 に答える
0

D はどこにでも出現する可能性があると思います。

If InStr(strString, "Y") > 0 Then
   strString = Replace(strString, "d", "")
   strString = Replace(strString, "  ", "")
   strString = Replace(strString, " ,", "")
   strString = Replace(strString, ",,", ",")
End If
于 2008-11-04T20:15:30.987 に答える