• 締切済み

文字列として作成した関数を、関数として機能させたい

いつも当コーナーを活用させていただいており、ありがとうございます。 通常は文字列を操作して作成した関数 ('=で始まる文字列) を、正規の関数として機能させるために、(1)F2キーで編集(2)エンターキー とするか、先頭の ' を消去して来ました。 個数が多くなると大変になりました。何かほかの手立てをご教授願いたいのですが。

みんなの回答

  • shintaro-2
  • ベストアンサー率36% (2266/6244)
回答No.8

#6さんの回答へのコメントに対する回答です >日本語の読解力不足で、ご教授事項が理解できておりません。 A列に '=b** と入力されているのであれば データ→区切り位置→カンマやタブなどの・・・ で”’” (アポストロフィ)を指定して、完了をクリックすれば ’が消えます。

全文を見る
すると、全ての回答が全文表示されます。
  • kkkkkm
  • ベストアンサー率65% (1624/2466)
回答No.7

> 形式を選択し貼りつけのところで操作ミスか、+0となり もしかしたらバージョンによっては0を入力したセルを選択しコピーしないとだめなのかもしれません。よろしかったら0で試してみてください。

全文を見る
すると、全ての回答が全文表示されます。
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.6

1列上であれば、[データ][区切り位置]で何も指定しないで完了すればいいのでは?

peter-chan
質問者

お礼

早速のご回答ありがとうございます。 日本語の読解力不足で、ご教授事項が理解できておりません。 後刻じっくりと考えてみます。取り敢えずお礼まで。

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.5

#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 こちらの方法では、セルに式が残っている

peter-chan
質問者

お礼

いろいろの視点からのご教授ありがとうございます。 マクロやVBAの新しい事項の連続でまだ頭の中で消化できておりません。 後刻じっくりと確認させていただきます。 またの折よろしくお願いいたします。

全文を見る
すると、全ての回答が全文表示されます。
回答No.4

マクロでもよろしければ 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 にしてください。 以上ご参考まで。

peter-chan
質問者

お礼

早速のご回答ありがとうございます。 単純にマクロをコピペし、実行したのみでミスがあるかもわかりませんが、今のところ状態は変わりませんでした。後刻確かめてみます。 とりあえずお礼まで。

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

年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 ただ結果(数値)のみになって、式は消えてしまう。

peter-chan
質問者

お礼

早速のご回答ありがとうございます。 投稿前にofficeTanakaのコーナーを読んだのですが、難解で理解できませんでした。 Evaluate(c.Value)については未経験で今後勉強します。新しい視点をありがとうございました。先人もいろいろされていることを聞き、頑張ってみます。

全文を見る
すると、全ての回答が全文表示されます。
  • kkkkkm
  • ベストアンサー率65% (1624/2466)
回答No.2

何も入力されていない、及び書式設定もしていないセルを選択してコピーします。 その後正規の関数として機能させたいセルを選択し、形式を選択して貼り付けで「演算」を加算にして貼り付け操作をします。 その時点で「']が消えますがまだ文字列のままなので、置換で=を=(同じイコール)に変換します。それで関数として機能させることができます。

peter-chan
質問者

お礼

早速の回答ありがとうございます。 形式を選択し貼りつけのところで操作ミスか、+0となり 後刻落ち着いて確かめてみます。 とりあえずお礼まで。

全文を見る
すると、全ての回答が全文表示されます。
  • shintaro-2
  • ベストアンサー率36% (2266/6244)
回答No.1

そのファイルを一旦csv方式で保存して その後、保存したcsv形式のファイルを開いてみてください。

peter-chan
質問者

お礼

早速のご回答ありがとうございました。 CSVファイルにしてから読み込んだところ、確かに機能しました。 ただ、他の項目(表や関数など)を継続使用しなければならず、 CSV経由ではちょっと不都合がり、今回は断念します。 新しい視点をありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 文字列関数について

    よろしくお願いします。 「abcdefghijklmn」 このような文字列から dとjので囲まれた文字列「defghij」を 抜き出したい場合はどうすれば良いでしょうか? 正規表現を使用するのでしょうか? 便利な関数や方法がありましたら教えてください。 お願いいたします。

    • 締切済み
    • PHP
  • 文字列

    ・文字列をキーボードから入力する関数を作成する。 書式:char *StrInp(char *pDefStr, int nLen); 引数:char *pDefStf; 初期文字列 int nLen; 入力可能文字数(1~79) 戻り値:正常ならば、入力した文字列の先頭ポインタ、エラー時はNULL。 処理:pDefStrに与えた文字列を初期値とする文字入力を行う。    nLenで指定した文字数まで入力可能とし、その範囲は1~79    までする。入力時の初期カーソル位置は与えた文字列の最後    になります。初期文字列が必要ない場合はヌル文字を与えます。    初期文字列を与えられた場合は、その文字列も更新可能とする。   ・入力の終了は「リターン」キーとする。   ・「BS」キーを押すと、カーソルの1文字前の文字前の文字を    消去する。 という、問いです。難しくてわかりません。どなたかたすけてください。        

  • 指定した文字列が抽出できる関数

    Excelで、指定した文字列だけを抽出表示する場合、「文字列を先頭(左)から抽出する」などの関数は「LEFT関数」や「RIGHT関数」がありますが、位置の指定ではなく、文字列の中にある、特定の文字だけを指定して抽出してできる関数は何でしょうか? たとえば「ラーメン」「うどん」「そば」いずれかを「含む」文字列が入っているセルの中から、「うどん」のセルだけを抽出して表示するという場合です。

  • 指定文字の同じ行2列、3列目の文字入力の個数

    B列3~12行に文字が入力されており指定文字Bの行の2列目に文字が入力されていればその個数をC14にまた3列目に文字入力個数5個をD14に入力したいのですがどなたか関数が解る方宜しくお願いします。Excel2013です。

  • 文字列の中をチェックしたいのですが・・・

    文字列の入った配列の中をチェックし重複する文字列がある場合 その文字列を消去し文字列に対応した個数をカウントしていくものを VB6.0で作っているのですがどうしても上手くいきません。 どうか教えてくださいおねがいします。

  • VBA/FIND関数を使っての先頭文字列の検索方法

    エクセルVBAにてFIND関数を使って、 文字列検索⇒コピー&ペーストのマクロを作成しているのですが、 どうしても、先頭文字列から検索をする方法がわかりません。 たとえば、 あいうえお いうえおあ おあいうえ えおあいう という文字列から「あいう*」を検索したい場合、 1行目だけを抽出したいのですが、 1,3,4行目が抽出されてしまいます。 find関数では先頭文字からの検索はできないのでしょうか? もし、不可能な場合、先頭文字からの検索を行うにはどのように行えばよいでしょうか? アドバイス、よろしくお願いいたします。

  • エクセルで文字列の個数を数える

    ある範囲のエクセルデータから決まった文字列の個数をカウントする関数の使い方が判れば教えてください。 例えば、A1からH200までのデータより、”リンゴ”という文字列が何個あるかカウントしたいのですが。 COUNTIF(A1:H200,"*リンゴ*")とすると”リンゴ”という文字列が含まれるセルの個数は出たのですが、”リンゴ”という文字列が複数含まれるセルもあるので、”リンゴ”という文字列の個数とは 一致しないようなのです。 どなたか、よろしくお願いします。

  • A列に同文字がありB列に個数が表示する関数

    A列に同じ文字がありB列に個数が表示される関数ないですか? 事務の仕事をしていえて2万件の中から同じ文字を探してと言われ イメージはこんな感じです。 A列 B列 田中 2 山田 1 田中 2 中村 1 よろしくお願いいたします。

  • 関数の戻り値として文字列を返して、printfで出力させることはできますか?

    いま、引数の数値によって、文字列を返すという関数を作り、それをprintf関数で出力したいと考えているんですが、どうやって作ればいいのかわかりません。 char data_2_dtmfdata(u8 getdata) { switch(getdata) { case 0x01: //tone"1" return "KEY_1"; case 0x02: //tone"2" return "KEY_2"; case 0x03: //tone"3" return "KEY_3"; } } このような感じで関数を作成して、 printf("%s",data_2_dtmfdata(data)); printf関数でこのように設定してあげれば”KEY_1”とか”KEY_3”とかの文字列を出力してあげられるのでしょうか?

  • 文字列の集計

    添付のように、カンマでくぎられた文字列を集計するための 関数を教えてください。 =COUNTIF(D2,"=*a*)でやって失敗しました。 *データの個数を知りたいです。

専門家に質問してみよう