Excel VBA質問箱 IV

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

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


347 / 3841 ページ ←次へ | 前へ→

【75480】VBA ループ コードのご教授
質問  ルーツ  - 14/4/13(日) 23:31 -

引用なし
パスワード
   シート2のD列〜K列までの1行目を
シート1のH3、O3、V3〜CG3と7列おきに転記したいです。

下記のコードでループを抜ける方法はありますか。
Dim rng As Range, i As Long
For Each rng In Worksheets("Sheet1").Range("D1:G1")
Worksheets("Sheet2").Range("H3").Offset(, 7 * i).Value = rng.Value
i = i + 1
Next rng

申し訳ございませんがご教授お願いいたします。

独学中の初心者です。
宜しくお願い致します。
・ツリー全体表示

【75479】Re:九九を途中で止めるプログラムを作成した...
発言  γ  - 14/4/13(日) 17:56 -

引用なし
パスワード
   何か勘違いをしていました。九九を復習しなければ・・・。

一回でも55を超えたら終了するのであれば、
Exit Sub ですね。

Sub 掛け算で答えが55以下を表示し、その後はループしない()
  Dim i As Long
  Dim j As Long
  Dim a As Long
  Dim sheetobj As Worksheet
  
  Set sheetobj = ThisWorkbook.Worksheets("Sheet1")
  With sheetobj
    a = 55
    For i = 1 To 9
      For j = 1 To 9
        If i * j > a Then
          Exit Sub
        Else
          .Cells(i + 1, j + 1).Value = i * j
        End If
      Next j
    Next i
  End With
End Sub
・ツリー全体表示

【75478】Re:九九を途中で止めるプログラムを作成した...
お礼  ガイツ  - 14/4/13(日) 17:00 -

引用なし
パスワード
   γ様。こんにちは。ご多忙中、またもやコメントを頂き有難う御座います。
至れり尽くせり恐縮です。

>Sub test()
>  Dim k As Long
>
>  For k = 1 To 3
>    '何もしない。主題ではないので。
>  Next
>  MsgBox k  ' 4が表示されるはず
>End Sub
>の例で考えましょう。
>
>k を 1 から順に 1ずつ加算して処理を実行するのですが、
>k = 3 の処理を実行(この場合は何もしてませんが)した後で(Nextのところで)、
>3 に 1 を加算して、おっと これは 上限値 3 を超えているからループから脱出せよ、
>となるのです。
>
>ですから、 ループを抜けた段階では、 k は 4 になっていて良いのです。
>これは仕様です。
>
>ループを抜けた後で、ここでいう k という ループカウンタの値を使うことは
>めったにありません。k の役目はもう終わっているのです。
>
>つまり、
>> 2回目のIfの際に『J=10』が代入されているようになっていました。
>これは想定どおりで、おかしなことでも何でもありません。
→分かり易いよう、プログラムまで書いて頂きすみません。
 お蔭様でこの点は完璧に理解できました。有難う御座いました!


>(2)
>> →ご指摘頂きました、End IfをEnd Subに変えるプログラムで自分が得たい
>>  回答を得ることができました!!
>ちょっと誤解があります。
>
>> 本来55以下を出力して欲しいので、
>> 7*8=56がaより大きくなる為、その前の7*7=49までを出力して欲しいのですが、
>> 6の段の54を出力した時点で止まってしまいます。
>という記述からすると、
>6 * 9 で終了してしまったらダメなはずで、
>7*1, 7*2 ・・・・ と実行させたいわけですから、私が書きましたように、
>以下のようにしたら良いでしょう。
>
>Sub 掛け算で答えが55以下を表示し、その後はループしない()
>  Dim i As Long
>  Dim j As Long
>  Dim a As Long
>  Dim sheetobj As Worksheet
>  
>  Set sheetobj = ThisWorkbook.Worksheets("Sheet1")
>  With sheetobj
>    a = 55
>    For i = 1 To 9
>      For j = 1 To 9
>        If i * j > a Then
>          Exit For
>        Else
>          .Cells(i + 1, j + 1).Value = i * j
>        End If
>      Next j
>    Next i
>  End With
> End Sub
>
>つづきは、どうぞトライしてみて下さい。
→こちらもプログラムを記載頂き申し訳ございません。ありがとうございます。
 ただ、小生の日本語力が無いばかりに得たい結果をお伝えしきれなかったと
 ころ、不甲斐なく思います。
 上記でご提示頂きましたプログラムでは『55以下の回答を全て表示する』という
 プログラムになると思います。
 小生が作成したいものは『順番に数字を表示していき、55より大きい解が得
 られたらそれを表示せずにそこまでの数字を表示する。つまり、7の段の
 7*8=56が一番最初に55を超えますので、7*7=49までを表示させ、それ以降は
 8の段、9の段は表示させない』ようにしたいのです。

ただ、今回ご教授頂いた下記2つのポイントを把握すればなんとか自力で辿りつけそ
うです。
 1.For a =b to c は最後のa=cのループの際、next aから元にループするまでの間は  a=c+1の数字を与えている。
 2.F8キーを押すことで1つづつプログラムの動きを把握できる。

折角の日曜日に、これ以上γ様の貴重なお時間を頂くのは申し分けなさすぎます。
後は微力ながら自分で頑張ってみようと思います。本当にありがとうございました。
(と、威勢の良いことを申し上げましたが、もしまた分からなくなってしまった場合は厚かましながらご教授頂けますと嬉しいです♪)
・ツリー全体表示

【75477】Re:九九を途中で止めるプログラムを作成した...
発言  γ  - 14/4/13(日) 13:58 -

引用なし
パスワード
   (1)
>  早速試しに実行してみたところ、やはりFor j =1 to 9としていますが、
>  2回目のIfの際に『J=10』が代入されているようになっていました。
>  (この考察が誤りでしたら厚かましながら今一度コメントを頂けますと幸甚です。)

Sub test()
  Dim k As Long

  For k = 1 To 3
    '何もしない。主題ではないので。
  Next
  MsgBox k  ' 4が表示されるはず
End Sub
の例で考えましょう。

k を 1 から順に 1ずつ加算して処理を実行するのですが、
k = 3 の処理を実行(この場合は何もしてませんが)した後で(Nextのところで)、
3 に 1 を加算して、おっと これは 上限値 3 を超えているからループから脱出せよ、
となるのです。

ですから、 ループを抜けた段階では、 k は 4 になっていて良いのです。
これは仕様です。

ループを抜けた後で、ここでいう k という ループカウンタの値を使うことは
めったにありません。k の役目はもう終わっているのです。

つまり、
> 2回目のIfの際に『J=10』が代入されているようになっていました。
これは想定どおりで、おかしなことでも何でもありません。

(2)
> →ご指摘頂きました、End IfをEnd Subに変えるプログラムで自分が得たい
>  回答を得ることができました!!
ちょっと誤解があります。

> 本来55以下を出力して欲しいので、
> 7*8=56がaより大きくなる為、その前の7*7=49までを出力して欲しいのですが、
> 6の段の54を出力した時点で止まってしまいます。
という記述からすると、
6 * 9 で終了してしまったらダメなはずで、
7*1, 7*2 ・・・・ と実行させたいわけですから、私が書きましたように、
以下のようにしたら良いでしょう。

Sub 掛け算で答えが55以下を表示し、その後はループしない()
  Dim i As Long
  Dim j As Long
  Dim a As Long
  Dim sheetobj As Worksheet
  
  Set sheetobj = ThisWorkbook.Worksheets("Sheet1")
  With sheetobj
    a = 55
    For i = 1 To 9
      For j = 1 To 9
        If i * j > a Then
          Exit For
        Else
          .Cells(i + 1, j + 1).Value = i * j
        End If
      Next j
    Next i
  End With
End Sub


つづきは、どうぞトライしてみて下さい。
・ツリー全体表示

【75476】Re:九九を途中で止めるプログラムを作成した...
お礼  ガイツ  - 14/4/13(日) 12:11 -

引用なし
パスワード
   γ様こんにちは。早速コメントを頂き有難う御座います。

>(1)まず、インデントをきちんとつけることです。
>これによってプログラムの構造が見やすくなるはずです。
→ご指摘有難う御座います。早速自分のプログラムにインデント
 を付けました。非常に見やすくなりました。以後、留意致します。
 今回は小生の大雑把な性格が露わとなり恥ずかしい限りです…
 又、見にくいところ、ご丁寧にご回答頂き有難う御座いました。

>(2)こうした作業をデバッグ(虫取り)といいますが、
>そのための技法はご存じですか?
>この場合は、ステップ実行(F8を押して、一行ごとに実行させる)が
>有効です。自分の思い違いに気づけます。
→お恥ずかしながら、F8で一行ごとに実行できることを知りませんでした。
 この機能を知れたことは非常に大きいです。有難う御座いました。
 早速試しに実行してみたところ、やはりFor j =1 to 9としていますが、
 2回目のIfの際に『J=10』が代入されているようになっていました。
 (この考察が誤りでしたら厚かましながら今一度コメントを頂けますと幸甚です。)

>(3)
>> 条件として答え(a)が55以下となれば
>> それ以上は何も記載しないというプログラム 
>「それ以上しない」とは、
>・そのあとすべてなら、
> Exit Subで抜けるべきだし、(そうではなさそう)
>・その行は、それ以上しないということなら、
> Exit Forはひとつでいいはずで、
>      If i * j > a Then
>        Exit For
>      End If
> が不要ではないですか?
>
>手を動かして確認してみて下さい。
→ご指摘頂きました、End IfをEnd Subに変えるプログラムで自分が得たい
 回答を得ることができました!!有難う御座いました。
 ただ、質問が言葉足らずで申し訳ないのですが、最終的には『1回の実
 行で別のセルにこの九九の表をn回作る』というプログラムを作成したいと
 思っています。こちらについては今回頂いた沢山のヒントをもとに、もう少
 し自分で考る所存です。

 素性も分からない小生に対し、温かいコメントを頂きましたこと、感謝致します。
 有難う御座いました。
・ツリー全体表示

【75475】Re:九九を途中で止めるプログラムを作成した...
発言  γ  - 14/4/13(日) 9:07 -

引用なし
パスワード
   いくつかコメントします。

(1)まず、インデントをきちんとつけることです。
これによってプログラムの構造が見やすくなるはずです。

Sub 掛け算で答えが55以下を表示し、その後はループしない()
  Dim i As Integer
  Dim j As Integer
  Dim a As Integer
  Dim sheetobj As Worksheet
  
  Set sheetobj = ThisWorkbook.Worksheets("Sheet1")

  With sheetobj
    a = 55   '(←ココを56,57,58,59,60と増やしてみました)
    For i = 1 To 9
      For j = 1 To 9
        If i * j > a Then
          Exit For
        Else
          .Cells(i + 1, j + 1) = i * j
        End If
      Next j
      If i * j > a Then
        Exit For
      End If
    Next i
  End With
End Sub

(いやきちんとやってます、ということなら、
 投稿の際、それをコピーペイストするようにしてください)

(2)こうした作業をデバッグ(虫取り)といいますが、
そのための技法はご存じですか?
この場合は、ステップ実行(F8を押して、一行ごとに実行させる)が
有効です。自分の思い違いに気づけます。

(3)
> 条件として答え(a)が55以下となれば
> それ以上は何も記載しないというプログラム 
「それ以上しない」とは、
・そのあとすべてなら、
 Exit Subで抜けるべきだし、(そうではなさそう)
・その行は、それ以上しないということなら、
 Exit Forはひとつでいいはずで、
      If i * j > a Then
        Exit For
      End If
 が不要ではないですか?

手を動かして確認してみて下さい。
・ツリー全体表示

【75474】九九を途中で止めるプログラムを作成したい...
質問  ガイツ  - 14/4/13(日) 3:19 -

引用なし
パスワード
   今晩は。ガイツと申します。VBAを初めて2週間程度の初心者です。
下記について上手くいかないところが有り、ご教授頂けますと幸いです。

<質問>
九九の表を作成したいのですが、条件として答え(a)が55以下となれば
それ以上は何も記載しないというプログラムを下記のように作成しました。

それなりにプログラムは走るのですが、本来55以下を出力して欲しいので、
7*8=56がaより大きくなる為、その前の7*7=49までを出力して欲しいのですが、
6の段の54を出力した時点で止まってしまいます。

試しにaの数値を56,57,58,59,60と増やしていくと、59までは55と同じ出力
になるのですが、a=60とした時点で7*8=56を出力し、止まってくれます。

非常に何となくで、分かりにくいと思うのですが、i=9,j=9としているもの
の、実はi=10(6*10=60をプログラムの中で計算している?)の結果を読み込んでい
るような印象を受けています。

かなり初歩的な質問かと存じますので、非常に恐縮ですが、何卒宜しくお願い致
します。

-----------------------------------------------------------------------
Sub 掛け算で答えが55以下を表示し、その後はループしない()

Dim i As Integer
Dim j As Integer
Dim a As Integer
Dim sheetobj As Worksheet
Set sheetobj = ThisWorkbook.Worksheets("Sheet1")

With sheetobj

a = 55(←ココを56,57,58,59,60と増やしてみました)

For i = 1 To 9

For j = 1 To 9

 If i * j > a Then

  Exit For

 Else

  .Cells(i + 1, j + 1) = i * j

 End If

Next j

 If i * j > a Then

  Exit For

 End If

Next i

End With

End Sub

-----------------------------------------------------------------------
・ツリー全体表示

【75473】Re:3-gram方式を用いた類似度計算方法に...
発言  γ  - 14/4/11(金) 8:22 -

引用なし
パスワード
   > ○ VBA質問箱基本ポリシー
> •してはいけない質問について
> 困ったことは基本的にどんな質問をされてもかまわないのですが、その中でも不適切な質問、
> というのがあります。以下のような質問は原則としてしないでください。お願いします。
>
>  ・セキュリティ上好ましくない結果を招く内容
>    例:ExcelやAccessのセキュリティレベルを変更するコード
>      ファイルのパスワードを調べる(破る)コード
>
>  ・丸投げ
>    「○○するにはどうすればいいか教えてください」といったような、
>    コードを最初から最後まで教えてもらうことを期待するような質問

上記に抵触しないですむように、少しはご自分でトライした跡を見せて
いただいたほうが回答し易いですね。
・ツリー全体表示

【75472】Re:3-gram方式を用いた類似度計算方法に...
発言  candle  - 14/4/11(金) 0:43 -

引用なし
パスワード
   お忙しい中、返信ありがとうございます。

>参考サイトもご覧になっているわけですから、
>どこに詰まっているのか知らせてもらえますか?
>(1)N-gramの考え方ですか?
>(2)計算方法ですか?
>(3)PHPのコードが読めないということですか?
>(4)VBAのコード作成にあたって、どこに詰まっていますか?

まず、私自身、プログラムは初心者で、VBAもマクロを繋げることぐらいのスキルしかございません。

仕事上で使用している文章で
様々な文献の同一文献を基に2人が作成した文章の一致率を求める必要があり、
色々なサイトを見てN-gram方式の考え方(類似度)を知ました。
そしてどうやれば、類似度を求めることができるのかいろいろ調べていたら、
参考サイトに行きつきました。
ただし、複数の文献の類似度を調べたい、かつ、
Excelの関数ではできなさそうだったので、
VBAでできないかと思い質問させていただきました。


>されようとしていることは、普通の事務計算ではないわけで、
>それなりのスキルを持った方と想像します。
>コード作成を下請けに出そうとしているのですか?

お恥ずかしい話、自分自身、スキルは全くありません。
コード作成を下請けに出すことはなく、内部で使用するものになります。

可能であればご教授いただければ幸いです。
・ツリー全体表示

【75471】Re:3-gram方式を用いた類似度計算方法に...
発言  γ  - 14/4/10(木) 20:35 -

引用なし
パスワード
   >>Excel内に入力された2つの文章を3-gram方式を用いて
>>類似度を求めたいのですが、可能でしょうか?
可能だと思います。

参考サイトもご覧になっているわけですから、
どこに詰まっているのか知らせてもらえますか?
(1)N-gramの考え方ですか?
(2)計算方法ですか?
(3)PHPのコードが読めないということですか?
(4)VBAのコード作成にあたって、どこに詰まっていますか?

されようとしていることは、普通の事務計算ではないわけで、
それなりのスキルを持った方と想像します。
コード作成を下請けに出そうとしているのですか?
・ツリー全体表示

【75470】Re:3-gram方式を用いた類似度計算方法に...
発言  candle  - 14/4/10(木) 13:48 -

引用なし
パスワード
   ▼candle さん:
>Excel VBAでできるのかわからないのですが、
>Excel内に入力された2つの文章を3-gram方式を用いて
>類似度を求めたいのですが、可能でしょうか?
>
>A列:元のテキスト
>B列:比較対象のテキスト
>C列:類似度(%表示)
>※A1、B1、C1は項目名が表示、2行目以降にデータを表示
>
>(例)
>A2:私は猫が好きです
>B2:私は犬が好きです
>C2:62.5 %
>
>※3行目以降、データがあるところまでC列の類似度を計算したい
>
>
>ご教授の程、よろしくお願いいたします。

参考URLです。
-PHPで2つの文章の類似度を計算する(3-gram版)-
ht tp://www.pahoo.org/e-soul/webtech/php03/php03-06-02.shtm
ht tp://www.pahoo.org/e-soul/webtech/php03/program/SimilarNgram.php
・ツリー全体表示

【75469】3-gram方式を用いた類似度計算方法につい...
質問  candle  - 14/4/10(木) 12:27 -

引用なし
パスワード
   Excel VBAでできるのかわからないのですが、
Excel内に入力された2つの文章を3-gram方式を用いて
類似度を求めたいのですが、可能でしょうか?

A列:元のテキスト
B列:比較対象のテキスト
C列:類似度(%表示)
※A1、B1、C1は項目名が表示、2行目以降にデータを表示

(例)
A2:私は猫が好きです
B2:私は犬が好きです
C2:62.5 %

※3行目以降、データがあるところまでC列の類似度を計算したい


ご教授の程、よろしくお願いいたします。
・ツリー全体表示

【75468】Re:L列にデータが入ってたらI列に記入
発言  kanabun  - 14/4/8(火) 10:07 -

引用なし
パスワード
   2日間、アクセスできませんので、
Sub 範囲セット() 方式(手動実行)を値が1つのときに対応できるように
微修正したものです。

Sub 範囲セット2()
  Dim i As Long
  Dim r1 As Range, r2 As Range
  Dim v
  
  With ActiveSheet
    Set r1 = .Cells(.Rows.Count, "I").End(xlUp).Offset(1)
    Set r2 = .Cells(.Rows.Count, "L").End(xlUp)
    v = Excel.Range(r1.Offset(, 3), r2).Value
    '-----------------------------------------------------------
    If Not IsArray(v) Then   '★4行 追加
      ReDim v(1 To 1, 1 To 1)
      v(1, 1) = r1.Offset(, 3).Value
    End If
    '-----------------------------------------------------------
    ReDim sa(1 To UBound(v), 0) As String
    For i = 1 To UBound(v)
      If Not IsEmpty(v(i, 1)) Then
        Select Case v(i, 1)
         Case Is >= 501: sa(i, 0) = "501 - "
         Case Is >= 451: sa(i, 0) = "451 - 500"
         Case Is >= 401: sa(i, 0) = "401 - 450"
         Case Is >= 351: sa(i, 0) = "351 - 400"
         Case Is >= 301: sa(i, 0) = "301 - 350"
         Case Is >= 251: sa(i, 0) = "251 - 300"
         Case Is >= 201: sa(i, 0) = "201 - 250"
         Case Is >= 151: sa(i, 0) = "151 - 200"
         Case Is >= 101: sa(i, 0) = "101 - 150"
         Case Else:   sa(i, 0) = "  - 100"
        End Select
      End If
    Next
    
    r1.Resize(UBound(v)).Value = sa
  End With
End Sub
・ツリー全体表示

【75467】Re:L列にデータが入ってたらI列に記入
発言  kanabun  - 14/4/7(月) 17:43 -

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

>こちらのマクロで動いたのは動いたのですが、
>L列に一つだけしか入ってない場合
>ReDim sa(1 To UBound(v), 0) As String
>の部分で型が一致しませんと出ます‥
>
>すいません、もう少しお付き合いください。

これまでに メインの処理(Select Case〜End Select)部分はほとんど同じで
実行方法が異なる 2つのコードをお見せしました。ひとつは、

>Sub 範囲セット()

で、実行したいときに手動で[マクロの実行]をするものです。

もうひとつは、そのあと提案した

> '// L列にデータが追加/更新/削除があったら自動実行する
> Private Sub Worksheet_Change(ByVal Target As Range)

のほうで、こちらはシートに書いておくと、L列にデータが入力されたり
セル消去があったりしたとき「自動で」処理がなされるものです。
こちらのほうは対象セルが1つでもエラーにはなりません。

もし
> Private Sub Worksheet_Change(ByVal Target As Range)
ではまずいということであれば、

> Sub 範囲セット()

のほうを手直ししますが、
> Private Sub Worksheet_Change(ByVal Target As Range)
をまだお試しになっていないのなら、一度これも試されてみて、それから
どちらの方式でいくか、判断されてはどうでしょう。
・ツリー全体表示

【75466】Re:L列にデータが入ってたらI列に記入
質問  じん  - 14/4/7(月) 13:33 -

引用なし
パスワード
   Sub 範囲セット()
  Dim i As Long
  Dim r1 As Range, r2 As Range
  Dim v
  
  With ActiveSheet
    Set r1 = .Cells(.Rows.Count, "I").End(xlUp).Offset(1)
    Set r2 = .Cells(.Rows.Count, "L").End(xlUp)
    v = Excel.Range(r1.Offset(, 3), r2).Value
    ReDim sa(1 To UBound(v), 0) As String
    For i = 1 To UBound(v)
      If Not IsEmpty(v(i, 1)) Then
        Select Case v(i, 1)
         Case Is >= 501: sa(i, 0) = "501 - "
         Case Is >= 451: sa(i, 0) = "451 - 500"
         Case Is >= 401: sa(i, 0) = "401 - 450"
         Case Is >= 351: sa(i, 0) = "351 - 400"
         Case Is >= 301: sa(i, 0) = "301 - 350"
         Case Is >= 251: sa(i, 0) = "251 - 300"
         Case Is >= 201: sa(i, 0) = "201 - 250"
         Case Is >= 151: sa(i, 0) = "151 - 200"
         Case Is >= 101: sa(i, 0) = "101 - 150"
         Case Else:   sa(i, 0) = "  - 100"
        End Select
      End If
    Next
    
    r1.Resize(UBound(v)).Value = sa
  End With
End Sub

こちらのマクロで動いたのは動いたのですが、
L列に一つだけしか入ってない場合
ReDim sa(1 To UBound(v), 0) As String
の部分で型が一致しませんと出ます‥

すいません、もう少しお付き合いください。
・ツリー全体表示

【75465】Re:L列にデータが入ってたらI列に記入
お礼  じん  - 14/4/7(月) 11:49 -

引用なし
パスワード
   お返事が遅くなりすいません。

説明不足で何度もご提示いただき、ありがとうございました。
お陰様で理想通りに動いてくれました。
本当にありがとうございました。
・ツリー全体表示

【75464】Re:計算式の答え 均等割り付け
発言  マナ  - 14/4/6(日) 18:28 -

引用なし
パスワード
   半角のみだとできないようですが、
全角にすればできそうです。

表示形式:[DBNum3]yyyy/m/d

ht tp://www.relief.jp/itnote/archives/002515.php
 
・ツリー全体表示

【75463】Re:Excel、変化するデータとLinkした演算
回答  あきな  - 14/4/6(日) 16:36 -

引用なし
パスワード
   ▼ohba-san さん:

こんにちは^^

ご質問の意味が、よく理解できていないのですが、こんなことでしょうか。。

条件)データと計算結果が同じシート内にある、としています

   A列     B列
----------------------------
1 4月5日    10    
2 4月6日     5    
3 4月7日     8    

            
10 4月5日    10    yesterday
11 4月6日     5    today
12 4月7日     8    nextday

A10 = Today()-1
A11 = Today()
A12 = Today()+1

B10 = VLOOKUP(A10,$A$1:$B$3,2,FALSE) (B12までコピー)
・ツリー全体表示

【75462】Re:計算式の答え 均等割り付け
回答  あきな  - 14/4/6(日) 16:13 -

引用なし
パスワード
   ▼(´・ω・`) さん:

こんにちは^^

>計算式の答えを均等割り付けしたい場合は
>どうしたらよいですか??
>=today()を均等割りしたいです。

こちらExcel2010ですが、セルの書式設定でできました。
セルの書式設定→配置→横位置→均等割り付け
・ツリー全体表示

【75461】Excel、変化するデータとLinkした演算
質問  ohba-san E-MAIL  - 14/4/6(日) 7:56 -

引用なし
パスワード
   データ入力シートに、毎日、数値を入力します
日々のデータは、行を追って残します

        A列    B列
--------------------------------------
1 A1     X月X 日   Xb
2 A2     X月XX日   Xbb
 ・
  ・
  ・
Y Yesterday  X月Y 日  y
T Today    X月T 日  t
N Nextday   X月N 日  n

別のシートで、日々変化する値にLinkしながら演算します
すなわち、演算式=Xb*f(xb)、Xbb*(Xbb)、・・・・、Today t*f(x)と

入力した日のみ、演算値は残りますが、
次に入力した時は、その入力した値にLinkして演算され、値は置き換わります

日々変わるデータにLinkして、演算するにはどうすればいいでしょうか?

以上
・ツリー全体表示

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