Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2635 / 13645 ツリー ←次へ | 前へ→

【66792】はじめまして ピン 10/10/6(水) 17:20 質問[未読]
【66793】Re:はじめまして keisuke 10/10/6(水) 18:18 回答[未読]
【66794】Re:はじめまして [名前なし] 10/10/6(水) 18:44 質問[未読]
【66797】Re:はじめまして keisuke 10/10/6(水) 19:23 質問[未読]
【66802】Re:はじめまして teian 10/10/6(水) 23:53 発言[未読]
【66803】Re:はじめまして [名前なし] 10/10/7(木) 6:57 お礼[未読]
【66804】Re:はじめまして teian 10/10/7(木) 9:13 発言[未読]
【66806】Re:はじめまして [名前なし] 10/10/7(木) 12:10 お礼[未読]
【66807】Re:はじめまして teian 10/10/7(木) 12:42 発言[未読]
【66808】Re:はじめまして ピン 10/10/7(木) 12:55 質問[未読]
【66809】Re:はじめまして teian 10/10/7(木) 13:30 発言[未読]
【66810】Re:はじめまして ピン 10/10/7(木) 14:28 お礼[未読]
【66811】Re:はじめまして teian 10/10/7(木) 14:57 回答[未読]
【66812】Re:はじめまして ピン 10/10/7(木) 16:21 お礼[未読]
【66795】Re:はじめまして teian 10/10/6(水) 18:58 発言[未読]
【66796】Re:はじめまして [名前なし] 10/10/6(水) 19:07 お礼[未読]
【66799】Re:はじめまして keisuke 10/10/6(水) 19:25 発言[未読]

【66792】はじめまして
質問  ピン  - 10/10/6(水) 17:20 -

引用なし
パスワード
   マクロでセル文字列の置換をしようと考えています
*をx( かける をx) に置換するマクロを伝授
頂けないでしょうか

【66793】Re:はじめまして
回答  keisuke  - 10/10/6(水) 18:18 -

引用なし
パスワード
   ▼ピン さん:

マクロの記録でやると下記のようになります。
ツールをクリック、マクロを選択して、新しいマクロの記録。
後は、セルを選択して置き換えをすれば、マクロができています。
最後に、マクロの記録終了をクリックします。

Sub Macro1()
'
' Macro1 Macro
' マクロ記録日 : 2010/10/6 ユーザー名 :
'
 Cells.Replace What:="*", Replacement:="x", LookAt:=xlPart, SearchOrder _
    :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

End Sub

【66794】Re:はじめまして
質問  [名前なし]  - 10/10/6(水) 18:44 -

引用なし
パスワード
   ▼keisuke さん:
したったらずで申し訳ないです

実は *を置換すると文字列すべてが置換されてしまい
こまってました

例えば あるセルに=1*1と書かれていたとしたら
セル表示は1ですが これを1x1と表示させたいです
しかし変換するとxだけになってしまい困りました。

すみませんが御指示下さい

▼ピン さん:
>
>マクロの記録でやると下記のようになります。
>ツールをクリック、マクロを選択して、新しいマクロの記録。
>後は、セルを選択して置き換えをすれば、マクロができています。
>最後に、マクロの記録終了をクリックします。
>
>Sub Macro1()
>'
>' Macro1 Macro
>' マクロ記録日 : 2010/10/6 ユーザー名 :
>'
> Cells.Replace What:="*", Replacement:="x", LookAt:=xlPart, SearchOrder _
>    :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
>
>End Sub

【66795】Re:はじめまして
発言  teian  - 10/10/6(水) 18:58 -

引用なし
パスワード
   > Cells.Replace What:="*", Replacement:="x", ・・・・

 Cells.Replace What:="~*", Replacement:="x", ・・・・
              ^^^^
ですかね。

【66796】Re:はじめまして
お礼  [名前なし]  - 10/10/6(水) 19:07 -

引用なし
パスワード
   有り難うございます やってます

▼teian さん:
>> Cells.Replace What:="*", Replacement:="x", ・・・・
>を
> Cells.Replace What:="~*", Replacement:="x", ・・・・
>              ^^^^
>ですかね。

【66797】Re:はじめまして
質問  keisuke  - 10/10/6(水) 19:23 -

引用なし
パスワード
   う〜ん、難しいですね。
ようは、どの様なことがやりたいのですか?
数式を(*をx)にしたら、計算結果は出てこないような、、、

”=”を消すのでは??

【66799】Re:はじめまして
発言  keisuke  - 10/10/6(水) 19:25 -

引用なし
パスワード
   〜ん、難しいですね。
ようは、どの様なことがやりたいのですか?
数式を(*をx)にしたら、計算結果は出てこないような、、、

”=”を消すのでは??

【66802】Re:はじめまして
発言  teian  - 10/10/6(水) 23:53 -

引用なし
パスワード
   もしかして、セルに入っている数式をそのまま表示したいってことですか?
そういうことであれば、算術式を置き換えなくても
数式を取り出して、表示書式文字列のセルに書き出してやればいいですよ。

上書きの例ですが、
With Range("A1:D100")
  .NumberFormat = "@"
  .Value = .Formula
End With

勘違いなら失礼。

【66803】Re:はじめまして
お礼  [名前なし]  - 10/10/7(木) 6:57 -

引用なし
パスワード
   ▼teian さん:
有り難うございます
数式を文字列化
文字編集
再数式化
という事がやりたいです

やりたいのは
=A1+A2という
式があったらそのとなりに

=A1&"+"&A2
という式を書き込むマクロを作るたいのです

数式がたくさんあるシートのチェックとして利用したかったです

>もしかして、セルに入っている数式をそのまま表示したいってことですか?
>そういうことであれば、算術式を置き換えなくても
>数式を取り出して、表示書式文字列のセルに書き出してやればいいですよ。
>
>上書きの例ですが、
>With Range("A1:D100")
>  .NumberFormat = "@"
>  .Value = .Formula
>End With
>
>勘違いなら失礼。

【66804】Re:はじめまして
発言  teian  - 10/10/7(木) 9:13 -

引用なし
パスワード
   複雑な数式とかエクセル提供の関数が入ったセルではどうなるか検証不足ですが、
やりたいのは↓のようなことですか?

Sub Sample()
Dim v As Variant, x As Variant
Dim i As Long
With Range("B1:B100")
  v = .Formula
  For i = 1 To UBound(v)
    For Each x In Split("+ - * /")
      v(i, 1) = Replace(v(i, 1), x, "&""" & x & """&")
    Next
  Next
  With .Offset(, 1)
    .Formula = v
  End With
End With
End Sub

【66806】Re:はじめまして
お礼  [名前なし]  - 10/10/7(木) 12:10 -

引用なし
パスワード
   ▼teian さん:
実行してみました。大変有難うございます

あと多重カッコ と乗数^と EXPと LNに対応できれば
ようが足ります。
もし良ければ教え願いませんか


複雑な数式とかエクセル提供の関数が入ったセルではどうなるか検証不足ですが、
>やりたいのは↓のようなことですか?
>
>Sub Sample()
>Dim v As Variant, x As Variant
>Dim i As Long
>With Range("B1:B100")
>  v = .Formula
>  For i = 1 To UBound(v)
>    For Each x In Split("+ - * /")
>      v(i, 1) = Replace(v(i, 1), x, "&""" & x & """&")
>    Next
>  Next
>  With .Offset(, 1)
>    .Formula = v
>  End With
>End With
>End Sub

【66807】Re:はじめまして
発言  teian  - 10/10/7(木) 12:42 -

引用なし
パスワード
   べき乗記号「^」は、

For Each x In Split("+ - * / ^")

と追加すればいいでしょうけど、
前レスしたとおり、POWER、EXP、LNなどのように
Excelに用意されたシート関数を利用している場合には難しいでしょうね。
と言うか、関数セルはどういう表示したいのか取り決めが必要でしょう。

【66808】Re:はじめまして
質問  ピン  - 10/10/7(木) 12:55 -

引用なし
パスワード
   カッコは いかがでしょうか
入れてみたけどできなかったのですが、うまいやり方は無いですか

▼teian さん:
>べき乗記号「^」は、
>
>For Each x In Split("+ - * / ^")
>
>と追加すればいいでしょうけど、
>前レスしたとおり、POWER、EXP、LNなどのように
>Excelに用意されたシート関数を利用している場合には難しいでしょうね。
>と言うか、関数セルはどういう表示したいのか取り決めが必要でしょう。

【66809】Re:はじめまして
発言  teian  - 10/10/7(木) 13:30 -

引用なし
パスワード
   >カッコは いかがでしょうか
>入れてみたけどできなかったのですが、うまいやり方は無いですか

なので、関数の場合は取り決めが必要でしょうと言っているのです。

例を出すなら
  A列 B列 (実際の数式)     C列
1  100 0.1 =A1/SUM($A$1:$A$4)  ????? 
2  200 0.2 =A2/SUM($A$1:$A$4)
3  300 0.3 =A3/SUM($A$1:$A$4)
4  400 0.4 =A4/SUM($A$1:$A$4)

というような場合、?????にはどういう表示を求めているんですか?
「100/1000」 と表示したいのか? 
もしくは、
「100/SUM(100,200,300,400)」
ですか?

そのあたりを明確にすれば、文字列操作でなんとか出来るかもしれませんが、
例外が多く考えるのも厭になっちゃうでしょうけどね。

ルールの提示があったとしても、妙案は誰か識者にお任せしたいと思います。

【66810】Re:はじめまして
お礼  ピン  - 10/10/7(木) 14:28 -

引用なし
パスワード
   ▼teian さん:
たびたびすみません。
最後のご質問となろうかと思いますが、

下記で数式が文字列化しますが、これを文字列(=A1+A2などの文字列を)を再び 数式に戻す方法をお教え願いませんでしょうか。

御願い致します。


>もしかして、セルに入っている数式をそのまま表示したいってことですか?
>そういうことであれば、算術式を置き換えなくても
>数式を取り出して、表示書式文字列のセルに書き出してやればいいですよ。
>
>上書きの例ですが、
>With Range("A1:D100")
>  .NumberFormat = "@"
>  .Value = .Formula
>End With
>
>勘違いなら失礼。

【66811】Re:はじめまして
回答  teian  - 10/10/7(木) 14:57 -

引用なし
パスワード
   表示書式を標準に戻してから、再セットすればいいでしょう。

With Range("A1:D100")
  .NumberFormat = "general"
  .Value = .Formula
End With

なお、
 .Value = .Formula
は、
 .Formula = .Value (.Formula)
の方がきれいでしょうけど。

【66812】Re:はじめまして
お礼  ピン  - 10/10/7(木) 16:21 -

引用なし
パスワード
   ▼teian さん:

どうもありがとうございました。文字列に変換して 文字を置換して
また数式に戻すという段取りで何とかやってみます。

>表示書式を標準に戻してから、再セットすればいいでしょう。
>
>With Range("A1:D100")
>  .NumberFormat = "general"
>  .Value = .Formula
>End With
>
>なお、
> .Value = .Formula
>は、
> .Formula = .Value (.Formula)
>の方がきれいでしょうけど。

2635 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free