[[20220115194713]] 『Replace使用してのエラー 名前付き引数が見つかax(hiro) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『Replace使用してのエラー 名前付き引数が見つかりません』(hiro)

Replaceを使用し文字列の置換を行ったのですが「部分一致」、「完全一致」や条件を指定しようと
以下のコードを記載したのですが、名前付き引数が見つかりませんのエラーがでてしまい、
どのようにコードを書きなおしてらよいかわからず困っております。
どなたかご教示お願いします。

.Replace what:="", replacement:="", LookAt:=xlPart ':部分一致( LookAt:=xlPart)
.Replace what:="", replacement:="", LookAt:=xlWhole ':完全一致( LookAt:=xlWhole)

 (検索文字列,置換文字列,部分完全一致,検索方向,大小文字区別,半角全角,書式条件,書式置換)

以下だと正常に動きますが。
MyArray(i1, 1) = Replace(MyArray(i1, 1), "Sum", vbLf)

以下のコードだとエラーになってしまします。
MyArray(i1, 1) = Replace(MyArray(i1, 1), "Sum", vbLf, LookAt:=xlWhole)

Public Sub データ削除試作品3(Lost_Row As Long)

    Dim da As Worksheet
    Dim i1 As Long
    Dim COUNT As Long
    Dim MyArray As Variant

    COUNT = Lost_Row - 2

    Set da = ThisWorkbook.Worksheets("date")

    MyArray = da.Range(da.Cells(1, 15), da.Cells(COUNT, 15))

    'For i1 = 1 To COUN

    For i1 = LBound(MyArray) To UBound(MyArray)

        MyArray(i1, 1) = Replace(MyArray(i1, 1), "Sum", vbLf)
        MyArray(i1, 1) = Replace(MyArray(i1, 1), "Sum", vbLf, LookAt:=xlWhole)

    Next i1

   da.Range(da.Cells(1, 15), da.Cells(COUNT, 15)) = MyArray

End Sub

< 使用 Excel:Office365、使用 OS:Windows10 >


 | 以下だと正常に動きますが。
 | MyArray(i1, 1) = Replace(MyArray(i1, 1), "Sum", vbLf)
 そうですか?

 まず、
 ・RangeオブジェクトのReplaceメソッド と
 ・Replace関数
 のふたつをきちんと腑分けして理解してください。
 上のReplaceはRangeオブジェクトとは無関係ですので、Replace関数とみなされます。

 また、vbLfの意味はご存じですか?
 そして、それはどの引数の実引数の積りなんでしょうか?

 確認をしてください。

(γ) 2022/01/15(土) 20:34


これではだめですか
 If MyArray(i1, 1) = "Sum" Then MyArray(i1, 1) = vbLf

(マナ) 2022/01/15(土) 20:46


ああ、よく読んでいませんでした。Replace関数を使いたかったのですね。
Replaceメソッドと混同しないようにしてください、
という指摘以外は無視してください。

すでに指摘をもらっていますので、そのようにしてください。
(γ) 2022/01/15(土) 23:22


Y様 マナ様。ご指摘ありがとうございました。
(hiro) 2022/01/16(日) 00:55

[[20220111183251]]正規表現を使用しての置換
 と関連した話なんですか?

 そこでは、RangeのReplaceメソッドを使って議論されていましたので、
 先入観で、今回もReplaceメソッドの話かと、決めつけてしまったのでした。

 ところで、その話は解決できたのですか?
 私には、そもそもされたいことがよく分かりませんでした。

 提示された解決策も、元の文字列に極めて依存した文字列を入力に求めており、
 ほんとうにそれでユーザーのニーズに応えた汎用性あるものなのか不明でした。

 継続問題であれば、最初からきちんと説明されたらどうですか?
 小出しにせずに。

 (a)変更前の式
  Sum(UE_PCELL_1_CONF_SCELL_DL_SA  
 + 2 * UE_PCELL_2_CONF_SCELL_DL_SA) 
 / 
 Sum(UE_PCELL_1_CONF_SCELL_DL_SA  
 + UE_PCELL_2_CONF_SCELL_DL_SA)
 から、
 (b)以下の文字列
 UE_PCELL_1_CONF_SCELL_DL_SA
 UE_PCELL_2_CONF_SCELL_DL_SA
 UE_PCELL_1_CONF_SCELL_DL_SA
 UE_PCELL_2_CONF_SCELL_DL_SA
 を取り出す、
 ということがやりたいことですか?

 (Q1)入力は、Excelのワークシートの数式ですか?それとももっと一般的なものですか?
     また、そのデータはどこにありますか?ワークシート上?テキストファイル?
 (Q2)出力はどういうものですか?
     変数(or 定義された名前)と思われるものを抽出するんですか?
     それは何のために抽出するんですか?
     その先にある、もっと上位の目標があれば、それをまず先に示したらどうですか?
     topdownで話をしたほうがよいと思います。"らっきょう"の皮みたいになりかねません。
 (Q3)抽出するために、それ以外の要素(文法上の既定の要素)を削除しようとしているように
     見えますが、そういうことなんですか?

(γ) 2022/01/16(日) 22:42


(Y)様 ご指摘ありがとうございます。

 (Q1)入力は、Excelのワークシートの数式ですか?それとももっと一般的なものですか?
     また、そのデータはどこにありますか?ワークシート上?テキストファイル?

     ワークシート上にあります。

 (Q2)出力はどういうものですか?
     変数(or 定義された名前)と思われるものを抽出するんですか?
     それは何のために抽出するんですか?
     その先にある、もっと上位の目標があれば、それをまず先に示したらどうですか?

     ワークシート上にある数式から余計なものを全て削除した物をワークシートに出力したい。

 (Q3)抽出するために、それ以外の要素(文法上の既定の要素)を削除しようとしているように
     見えますが、そういうことなんですか?

     はい、余計なものを削除して、完成例のような形にしたいです。

     例
     [2021/11/02]
     (Sum([NRRCC_RRC_STPREQ_MO_SIGNALLING]
	+ [NRRCC_RRC_STPREQ_MO_DATA]
	+ [NRRCC_RRC_STPREQ_MO_VOICECALL]
	+ [NRRCC_RRC_STPREQ_MO_SMS]
	+ [NRRCC_RRC_STPREQ_MO_VIDEOCAL]
	)

    完成例
    NRRCC_RRC_STPREQ_MO_SIGNALLING
	NRRCC_RRC_STPREQ_MO_DATA
	NRRCC_RRC_STPREQ_MO_VOICECALL
	NRRCC_RRC_STPREQ_MO_SMS
	NRRCC_RRC_STPREQ_MO_VIDEOCAL

(hiro) 2022/01/17(月) 12:49


回答もらっていない質問があります。それがないと皆さんも回答ができないと思います。

| Excelのワークシートの数式ですか?それとももっと一般的なものですか?

| その先にある、もっと上位の目標があれば、それをまず先に示したらどうですか?
大方針がわかっていれば、ある程度、細かいところの判断も付きやすいでしょう。

| 抽出するために、それ以外の要素(文法上の既定の要素)を削除しようとしているように
| 見えますが、そういうことなんですか?
つまり、何が余計なもので、何が必要なものなんですか?
明示的に書いていただかないと、無駄なやりとりが続きます。いたちごっこです。
もしExcelなら、演算子とかユーザー定義関数とか、
いろいろなメソッド名、プロパティ名とかはどうなんですか。

[2021/11/02]は数式の一部とも思えませんが、これを消すなら、
消すべきものは無数にありえますね。(コメント的なものならたくさんありえます)
逆に、「アルファベット大文字、数字、_ で構成される文字列」
とかで抽出できるのであれば、そのアプローチのほうが適切かもしれません。

(γ) 2022/01/17(月) 14:52


(Y)様 度々のご指摘ありがとうございます。

求めているものは、文法上の既定の要素以外の全ての削除です。

()「」[]{}/-*+ などの記号やSUM、sum、Sum、などの要素以外の文字日付など全てを削除したいです。
(hiro) 2022/01/17(月) 15:15


文法とはExcelの数式ということですか?
何か別のシステムの簡易言語だったりしませんか?
「文法上の規定の要素」というのをすべて列挙するのは無理ですね。
そもそも何の文法かわかりませんし。

そもそもの目的も開示されないですし、
いまのままだと、こちらではまったく着手できません。
少し間を置きましょう。
(γ) 2022/01/17(月) 16:11


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.