質問: セル内のexcelテキスト値で文字「*」を検索して置換する方法(数式ではない) この質問と非常によく似ています: excelで文字「*」を見つけて置き換える方法 しかし、数式はそのままにしておく必要があります。 「*」が付いた2種類のセルがある約50枚以上のシートがありますケース1の内容-セルの値は次のようになります: "*** 1.43"ケース2の内容-セルの値は次のようになります: "= 100 * b3"アスタリスクを乗数として使用する数式を含むケース2のセルを無視して、すべてのケース1のアスタリスクを見つけて「」に置き換えたいと思います。基本的に、静的セルを変更しますが、数式でセルを変更しないでください。ありがとう!
回答: まず、問題が発生した場合に備えて、ファイルのコピーを作成します。次に、次のvbaサブルーチンを作成します。sub stilllearning1() for each c in range("a1:z100") if not c.hasformula then temp = worksheetfunction.substitute(c.value, "*", "") if left(temp, 1) = "=" or left(temp, 1) = "'" then temp = "'" & temp end if c.value = temp end if next c end sub excelおよびその他のmicrosoftofficeアプリケーションでvbaを使用する方法の一般的な情報については、 ms officeでvbaを追加するにはどうすればよいですか? を参照してください。 stilllearning1は単なる任意のサブルーチン名です。好きな名前を使用してください。 a1:z100を置換を実行する範囲に変更します。私は残りがいくぶん自明であることを願っています: for each c ... next cは、2600回実行されるループです(a1:z100のサンプル範囲の場合; 26列×100行)。cはすべてのセルに移動します。その範囲で。 c.hasformulaは、セルcに数式が含まれているかどうかを示すブール値です。 =を含むセルは文字列(テキスト)値であるため、これは最初の文字が'===であるかどうかを確認するよりも少し信頼性がありますが、===のように見えます。 =で始まるように見えます。 セルに数式が含まれている場合。ほっといて。 に数式が含まれていない場合、置換を行います。 置換の結果をチェックして、=または'で始まるかどうかを確認します。含まれている場合、セルに直接割り当てると、excelがその最初の文字を望ましくない方法で解釈するため、'を先頭に追加して保護します。 次に、サブルーチンを実行します。