- 締切済み
文字列として作成した関数を、関数として機能させたい
いつも当コーナーを活用させていただいており、ありがとうございます。 通常は文字列を操作して作成した関数 ('=で始まる文字列) を、正規の関数として機能させるために、(1)F2キーで編集(2)エンターキー とするか、先頭の ' を消去して来ました。 個数が多くなると大変になりました。何かほかの手立てをご教授願いたいのですが。
- みんなの回答 (8)
- 専門家の回答
みんなの回答
- shintaro-2
- ベストアンサー率36% (2266/6245)
- kkkkkm
- ベストアンサー率66% (1719/2589)
> 形式を選択し貼りつけのところで操作ミスか、+0となり もしかしたらバージョンによっては0を入力したセルを選択しコピーしないとだめなのかもしれません。よろしかったら0で試してみてください。
- mshr1962
- ベストアンサー率39% (7417/18945)
1列上であれば、[データ][区切り位置]で何も指定しないで完了すればいいのでは?
- imogasi
- ベストアンサー率27% (4737/17069)
#3です。同じくVBAですが多少違うコードでの例が見つかったので Sub Sample3() Dim c As Range Range("C1:C6").Select For Each c In Selection With c If .PrefixCharacter = "'" Then .Value = .Value End If End With Next c End Sub ここにある .PrefixCharacter が文字列化する先頭のアポストロフィを検知するコードです。 Cell関数のprefix(LOTUS123との互換性のための関数)でとらえられるかどうかわからない。検索や置換はしにくいと思う。 特殊なもので、(文字列のクオーテイションと違った)存在のようです。 例データ A1:A5 2 4 1 3 5 ーー C1:C6 '=SUM(A1:A3) '=SUM(A1:A4) '=SUM(A1:A5) '=A1+A2+A4 '=A1*A3 '=SQRT(A1) C1:C6を選択して、上記VBAコードを実行 結果 C1:C6 7 10 15 9 2 1.414213562 こちらの方法では、セルに式が残っている
お礼
いろいろの視点からのご教授ありがとうございます。 マクロやVBAの新しい事項の連続でまだ頭の中で消化できておりません。 後刻じっくりと確認させていただきます。 またの折よろしくお願いいたします。
- NotFound404
- ベストアンサー率70% (288/408)
マクロでもよろしければ Alt + F11 を押してVBEの画面にします。 メニューの「挿入」から「標準モジュール」選びます。 新しいウィンドウが出ますので下記をコピペ。 Sub DoFormula() 'PrefixCharacter を削除します Dim r As Range For Each r In Selection r.Formula = r.Formula Next End Sub Sub DoNotFormula() 'PrefixCharacter を追加します Dim r As Range For Each r In Selection If r.HasFormula Then r.Formula = "'" & r.Formula End If Next End Sub Alt + F4 でVBEを閉じます。 Excelの画面に戻るので、『'』を取り去りたいところを選択状態にします。 Alt + F8 または リボンの表示タブのマクロをクリックすると 先ほどのDoFormula と DoNotFormula がありますから DoFormulaをクリック後に「実行」をクリックしてみてください。 ファイルを保存する際にはマクロ有効ブック(xlsm)か xls にしてください。 以上ご参考まで。
お礼
早速のご回答ありがとうございます。 単純にマクロをコピペし、実行したのみでミスがあるかもわかりませんが、今のところ状態は変わりませんでした。後刻確かめてみます。 とりあえずお礼まで。
- imogasi
- ベストアンサー率27% (4737/17069)
年2-3回同様の趣旨の質問が出る。しかし特殊な問題です。 私も十分に、真の原因を理解できてないところでむつかしい。LOTUS123互換性のPrefix(’)というものの問題かなと思う。 http://officetanaka.net/excel/function/tips/tips15.htm に説明してあることの関連だと思う。 この記事の後半部の対策でうまく行けばそれでよい。 私は、うまく行かなかったので、私は下記をやってみると計算がされた。 c = Evaluate(c.Value) を入れた。 例 A1:A5 2 3 4 5 1 B1に =SUM(A1:A2) これをB5まで式を複写。 式はここでは省略。 ーー VBAで標準モジュールに Sub Sample() Dim c As Range For Each c In Selection If Not c.HasFormula Then c = c c = Evaluate(c.Value) Else End If Next c End Sub を貼り付ける。 B1:B5を範囲指定しておいて、実行。 ーー 結果 5 9 14 15 15 ただ結果(数値)のみになって、式は消えてしまう。
お礼
早速のご回答ありがとうございます。 投稿前にofficeTanakaのコーナーを読んだのですが、難解で理解できませんでした。 Evaluate(c.Value)については未経験で今後勉強します。新しい視点をありがとうございました。先人もいろいろされていることを聞き、頑張ってみます。
- kkkkkm
- ベストアンサー率66% (1719/2589)
何も入力されていない、及び書式設定もしていないセルを選択してコピーします。 その後正規の関数として機能させたいセルを選択し、形式を選択して貼り付けで「演算」を加算にして貼り付け操作をします。 その時点で「']が消えますがまだ文字列のままなので、置換で=を=(同じイコール)に変換します。それで関数として機能させることができます。
お礼
早速の回答ありがとうございます。 形式を選択し貼りつけのところで操作ミスか、+0となり 後刻落ち着いて確かめてみます。 とりあえずお礼まで。
- shintaro-2
- ベストアンサー率36% (2266/6245)
そのファイルを一旦csv方式で保存して その後、保存したcsv形式のファイルを開いてみてください。
お礼
早速のご回答ありがとうございました。 CSVファイルにしてから読み込んだところ、確かに機能しました。 ただ、他の項目(表や関数など)を継続使用しなければならず、 CSV経由ではちょっと不都合がり、今回は断念します。 新しい視点をありがとうございました。
お礼
早速のご回答ありがとうございます。 日本語の読解力不足で、ご教授事項が理解できておりません。 後刻じっくりと考えてみます。取り敢えずお礼まで。