Excel VBA質問箱 IV

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

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


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

【79459】Re:2枚目のシートの特定のセルの値を違...
発言  マナ  - 17/10/23(月) 23:23 -

引用なし
パスワード
   ▼初心者XXXXYYYY さん:

1)新規ブックを作成
2)名前を付けて保存

この操作を「マクロの記録」してみてください。
次に、記録されたマクロを実行してみてください。
・ツリー全体表示

【79458】Re:列方向のオートフィル
発言  マナ  - 17/10/23(月) 23:16 -

引用なし
パスワード
   ▼HNKYOTO さん:
>すいません。
>回答を間違えました。


了解です


>Range("A1:B2").AutoFill Destination:=Range(("A3"), Range("A3").End(xlToRight)).Offset(1)
>


最初からコードを提示していただけたら
誤解なく、ピンポイントで回答できます。

こうでしょうか。

Range("A1:A2").AutoFill Destination:=Range("A1", Range("A3").End(xlToRight).Offset(-1))
・ツリー全体表示

【79457】Re:2枚目のシートの特定のセルの値を違...
発言  初心者XXXXYYYY  - 17/10/23(月) 23:14 -

引用なし
パスワード
   ▼マナ さん:
>▼初心者XXXXYYYY さん:
>
>ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & ThisWorkbook.Worksheets(2).Cells(i, 1) & ".xlsx", FileFormat:= xlOpenXMLWorkbook
>
>後ろに
>
>> , FileFormat:= xlOpenXMLWorkbook
>
>を追加するとどうなりますか。

先ほどと変わらないです。
・ツリー全体表示

【79456】Re:列方向のオートフィル
発言  マナ  - 17/10/23(月) 22:35 -

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

落ち着いて説明してください。
全く理解できません。

最初の質問では、こういうことかと思いましたが…
違いますか。
オートフィルは使っていません。

Sub test()
  Dim r As Range
'
  Set r = Range("A3", Range("A3").End(xlToRight))
  
  r.Offset(-2).Formula = "=B1+C1"
  r.Offset(-1).Formula = "=B1-C1"
       
End Sub
・ツリー全体表示

【79455】Re:列方向のオートフィル
発言  HNKYOTO E-MAIL  - 17/10/23(月) 22:31 -

引用なし
パスワード
   すいません。
回答を間違えました。

これも
Range("A1:B2").AutoFill Destination:=Range(("A3"), Range("A3").End(xlToRight)).Offset(1)

でやろうとしたのですが、うまくいきませんでした。
まだまだ初心者です。
アドバイスをお願い致します。
・ツリー全体表示

【79454】Re:列方向のオートフィル
発言  HNKYOTO E-MAIL  - 17/10/23(月) 22:24 -

引用なし
パスワード
   普通にC列の始点と終点を指定してオートフィルを掛けるとB列の選択数値を変更してC列に別の数式を入力して同じようにオートフィルを掛けた場合、C列の全ての計算式が書き換わってしまいます。

Range("C1").AutoFill Destination:=Range("C1:C" & Range("A5000").End(xlUp).Row)

これをB列の1,2,3それぞれの選択時にC列に3種類の計算式を入力したいです。
・ツリー全体表示

【79453】Re:列方向のオートフィル
発言  マナ  - 17/10/23(月) 21:50 -

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

>上記の様なデータがあり、A1:B2 を選択してそのまま3行目の最終データ入力セルまでオートフィルをかけたいのですが、どなたか良い方法をアドバイスお願い致します。

何が問題なのですか?
・ツリー全体表示

【79452】Re:オートフィルターをかけたデータにオ...
発言  マナ  - 17/10/23(月) 21:45 -

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


オートフィルではありませんが

Sub test()

  With Range("a1").CurrentRegion
    .AutoFilter
    .AutoFilter 2, 3
    Intersect(.Offset(1), .Columns(3)).FormulaR1C1 = "=112&rc[-2]"
    .AutoFilter
  End With
       
End Sub
・ツリー全体表示

【79451】列方向のオートフィル
質問  HNKYOTO E-MAIL  - 17/10/23(月) 21:32 -

引用なし
パスワード
      A    B   C   D  .....
1 =B1+C1 =C1+D1
2 =B1-C1 =C1-D1 
3  OK   NG  OK   NG  .....
4
5
.
.
.

上記の様なデータがあり、A1:B2 を選択してそのまま3行目の最終データ入力セルまでオートフィルをかけたいのですが、どなたか良い方法をアドバイスお願い致します。
・ツリー全体表示

【79450】オートフィルターをかけたデータにオート...
質問  HNKYOTO E-MAIL  - 17/10/23(月) 21:15 -

引用なし
パスワード
     A  B(オートフィルター)  C
1 101     2      ="112"&(A1)
2 201     2       ↓
3 303     2      オートフィル
4 404     2
.  .      .
.  .      .
.  .      .

上記の様なデータがありB列には「2」以外に「1」や「3」が存在します。
B列のそれぞれの選択数値に対してC列に別々の計算式を入力しオートフィル
をかけたいのですがなかなかうまくいきません。

どなたかアドバイスをお願い致します。
・ツリー全体表示

【79449】Re:2枚目のシートの特定のセルの値を違...
発言  マナ  - 17/10/23(月) 20:58 -

引用なし
パスワード
   ▼初心者XXXXYYYY さん:

ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & ThisWorkbook.Worksheets(2).Cells(i, 1) & ".xlsx", FileFormat:= xlOpenXMLWorkbook

後ろに

> , FileFormat:= xlOpenXMLWorkbook

を追加するとどうなりますか。
・ツリー全体表示

【79448】Re:2枚目のシートの特定のセルの値を違...
発言  初心者XXXXYYYY  - 17/10/23(月) 19:30 -

引用なし
パスワード
   ▼マナ さん:
>▼初心者XXXXYYYY さん:
>
>>ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & ThisWorkbook.Worksheets(2).Cells(i, 1) & ".xlsx"
>>上の行で進まなくなってしまいます。
>
>エラーですか?
>どんなメッセージですか。

実行時エラー'1004';
アプリケーション定義またはオブジェクト定義のエラーです。

上メッセージが表示されてしまいます。
・ツリー全体表示

【79447】Re:シート上で、複数合計をだす
お礼  ノンボ E-MAIL  - 17/10/22(日) 16:25 -

引用なし
パスワード
   ▼γ さん:
>説明ありがとうございました。
>
>であれば、私の提示したtest2はNGでしょう。
>Areasの2番目はA店舗に該当するでしょうから。
>
>データのありようはこちらからは見えません。
>あなたは当然と思っていても、こちらからは見えません。
>最初から簡単なレイアウトを示してもらえば一目瞭然で、双方の手間は省けます。
>今後、色々なところで質問をされると思いますが、配慮して下さい。
γさん
 test2はうまくいきませんでしたが、大変参考になっています。ありがとうございました。今度質問するときは、レイアウトをしめして、質問するようにします。ちゃんと配慮するように心がけます。大変勉強になりました。ありがとうございました。
・ツリー全体表示

【79446】Re:シート上で、複数合計をだす
発言  γ  - 17/10/22(日) 12:27 -

引用なし
パスワード
   説明ありがとうございました。

であれば、私の提示したtest2はNGでしょう。
Areasの2番目はA店舗に該当するでしょうから。

データのありようはこちらからは見えません。
あなたは当然と思っていても、こちらからは見えません。
最初から簡単なレイアウトを示してもらえば一目瞭然で、双方の手間は省けます。
今後、色々なところで質問をされると思いますが、配慮して下さい。
・ツリー全体表示

【79445】Re:シート上で、複数合計をだす
お礼  ノンボ E-MAIL  - 17/10/22(日) 7:39 -

引用なし
パスワード
   ▼γ さん:
>無駄な全文引用はしないようにしてください。
>
>そして、
>>そもそも、特別なことがなぜ最初のA店舗にだけ発生しているのか。
>といった事に対する説明はいただけないのですか?
>またいくつか提案もしています(式を埋め込む等)。
>これらについてもあなたの感想、考えなどを書いてもらいたいですね。

 γさん、お世話になります。
大変説明不足でもうしわけありません。A店舗だけ品目集計を行うのは、A店のみ品目すうが非常に多いためです。(店舗様の要望もあります。)提案いただきました、式の埋め込みなどは、自分にはわからないことでしたので、とても勉強になりました。例題をいくつもいただきましてほんとうにありがとうございます。大変助かりました。ありがとうございました。
・ツリー全体表示

【79444】Re:シート上で、複数合計をだす
発言  γ  - 17/10/21(土) 19:03 -

引用なし
パスワード
   無駄な全文引用はしないようにしてください。

そして、
>そもそも、特別なことがなぜ最初のA店舗にだけ発生しているのか。
といった事に対する説明はいただけないのですか?
またいくつか提案もしています(式を埋め込む等)。
これらについてもあなたの感想、考えなどを書いてもらいたいですね。
・ツリー全体表示

【79443】Re:シート上で、複数合計をだす
お礼  ノンボ E-MAIL  - 17/10/21(土) 18:39 -

引用なし
パスワード
   ▼γ さん:
>前提が違っているかも知れないが、使えるなら使ってみてください。
>
>Sub test()
>  Dim rng   As Range
>  Dim a    As Range
>  Dim rng1  As Range
>  Dim lastRow As Long
>  
>  Set rng1 = Range("A1").End(xlDown).Offset(3)
>  lastRow = Cells(Rows.Count, 1).End(xlUp).Row
>  Set rng = Range(rng1, Cells(lastRow, 1)) _
>       .Offset(0, 2).SpecialCells(xlCellTypeConstants)
>  
>  For Each a In rng.Areas
>    With a
>      .Cells(1).Offset(.Rows.Count).Value = WorksheetFunction.Sum(.Cells)
>    End With
>  Next
>End Sub
>
>Sub test2()
>  Dim rng   As Range
>  Dim lastRow As Long
>  Dim k    As Long
>  
>  lastRow = Cells(Rows.Count, 1).End(xlUp).Row
>  Set rng = Range("A1", Cells(lastRow, 1)) _
>       .Offset(0, 2).SpecialCells(xlCellTypeConstants)
>  
>  For k = 2 To rng.Areas.Count
>    With rng.Areas(k)
>      .Cells(1).Offset(.Rows.Count).Formula = _
>        "=Sum(" & .Cells.Address(False, False) & ")"
>    End With
>  Next
>End Sub
>
>レイアウトの提示がなかったのは残念。
>以下のような疑問が生じないように求めたものだが、
>人の言うことに耳を貸さない方のようです。
>・A列には店舗名が重複して入力されているものと仮定
>・一行目だけのデータではないものと仮定(Set rng1 = Range("A1").End(xlDown).Offset(3)が不適当の懼れ)
>・A店舗だけされている「品目集計」の意味が説明されなかった。
>
>そもそも、特別なことがなぜ最初のA店舗にだけ発生しているのか。
>汎用性を持たせる必要はないのか。
>
>アドホックな対応をするなら、コード対応ではなく、ワークシートを直せばよいのではないか。
>もし手作業でSUM関数を使った計算式がA店舗の合計値セルに埋められているなら、
>A店舗を特別視する必要はないはず。提示のロジックで対応可能だったはず。
>
>なお、結果数値を書き込む方式だと、データの一部変更などがあって
>処理をやりなおす必要がもし出てきた場合には、再処理ができない。
>結果が定数値とみなされて計算結果が変わってくる。
>だから、式を埋め込んだ方がよいかもしれない。
>
>なお、前のスレッドであったマナさんの助言にもトライされたほうがよいと
>思います。
ご教授大変ありがとうございました。
とても役に立ちました。私のVBAはまだ未熟です。
とても感謝します。 ありがとうございました。
・ツリー全体表示

【79442】Re:シート上で、複数合計をだす
発言  γ  - 17/10/21(土) 12:05 -

引用なし
パスワード
   前提が違っているかも知れないが、使えるなら使ってみてください。

Sub test()
  Dim rng   As Range
  Dim a    As Range
  Dim rng1  As Range
  Dim lastRow As Long
  
  Set rng1 = Range("A1").End(xlDown).Offset(3)
  lastRow = Cells(Rows.Count, 1).End(xlUp).Row
  Set rng = Range(rng1, Cells(lastRow, 1)) _
       .Offset(0, 2).SpecialCells(xlCellTypeConstants)
  
  For Each a In rng.Areas
    With a
      .Cells(1).Offset(.Rows.Count).Value = WorksheetFunction.Sum(.Cells)
    End With
  Next
End Sub

Sub test2()
  Dim rng   As Range
  Dim lastRow As Long
  Dim k    As Long
  
  lastRow = Cells(Rows.Count, 1).End(xlUp).Row
  Set rng = Range("A1", Cells(lastRow, 1)) _
       .Offset(0, 2).SpecialCells(xlCellTypeConstants)
  
  For k = 2 To rng.Areas.Count
    With rng.Areas(k)
      .Cells(1).Offset(.Rows.Count).Formula = _
        "=Sum(" & .Cells.Address(False, False) & ")"
    End With
  Next
End Sub

レイアウトの提示がなかったのは残念。
以下のような疑問が生じないように求めたものだが、
人の言うことに耳を貸さない方のようです。
・A列には店舗名が重複して入力されているものと仮定
・一行目だけのデータではないものと仮定(Set rng1 = Range("A1").End(xlDown).Offset(3)が不適当の懼れ)
・A店舗だけされている「品目集計」の意味が説明されなかった。

そもそも、特別なことがなぜ最初のA店舗にだけ発生しているのか。
汎用性を持たせる必要はないのか。

アドホックな対応をするなら、コード対応ではなく、ワークシートを直せばよいのではないか。
もし手作業でSUM関数を使った計算式がA店舗の合計値セルに埋められているなら、
A店舗を特別視する必要はないはず。提示のロジックで対応可能だったはず。

なお、結果数値を書き込む方式だと、データの一部変更などがあって
処理をやりなおす必要がもし出てきた場合には、再処理ができない。
結果が定数値とみなされて計算結果が変わってくる。
だから、式を埋め込んだ方がよいかもしれない。

なお、前のスレッドであったマナさんの助言にもトライされたほうがよいと
思います。
・ツリー全体表示

【79441】Re:2枚目のシートの特定のセルの値を違...
発言  マナ  - 17/10/20(金) 19:32 -

引用なし
パスワード
   ▼初心者XXXXYYYY さん:

>ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & ThisWorkbook.Worksheets(2).Cells(i, 1) & ".xlsx"
>上の行で進まなくなってしまいます。

エラーですか?
どんなメッセージですか。
・ツリー全体表示

【79440】Re:A列の数式のシェイプを一括作成するマ...
お礼  VBA初心者  - 17/10/20(金) 11:57 -

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

回答ありがとうございます。

提示いただきました修正をし、実行したところ、A列の数式を文字列としてオートシェイプ内に記入していましたので、更に、
Selection.Characters.Text = rcode(i)  
の個所を
Selection.Formula = rcode(i)
にすることで、望む結果が得られました。

お時間をいただき、ありがとうございました。
・ツリー全体表示

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