Excel VBA質問箱 IV

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

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


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

【81344】Re:横並びの表 数字が入っているセルのみ
発言  マナ  - 20/6/8(月) 19:03 -

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

>VBA初心者です

こんな感じが、わかりやすいかもしれません。

Sub test()
  Dim w() As String
  Dim r As Range
  Dim j As Long, k As Long, i As Long
  Dim 名前 As String, 商品 As String
  Dim n As Long
  
  Set r = Cells(1).CurrentRegion
  
  For j = 2 To r.Rows.Count
    名前 = r.Cells(j, 1).Value
    For k = 2 To r.Columns.Count
      商品 = r.Cells(1, k).Value
      For i = 1 To r.Cells(j, k).Value
        n = n + 1
        ReDim Preserve w(1 To 2, 1 To n)
        w(1, n) = 商品
        w(2, n) = 名前
      Next
    Next
  Next
  
  With Worksheets.Add
    .Cells(1).Resize(2, n).Value = w
  End With
  
End Sub
・ツリー全体表示

【81343】横並びの表 数字が入っているセルのみ
質問  猫ママ  - 20/6/8(月) 14:57 -

引用なし
パスワード
   VBA初心者です、どうか教えてください。


     ぶどう  りんご  白桃
稲川尚美      1           1
蜂須 汐           2       1


商品名の下に件数が入っている表があります。件数が入っているセルだけ


ぶどう      白桃       りんご     りんご       白桃
稲川尚美 稲川尚美 蜂須 汐    蜂須 汐  蜂須 汐


商品名と名前を別シートに貼り付けたいです。2件以上の場合はその件数分連続で
貼り付けたいです。
お手数お掛け致しますがよろしくお願いいたします。
・ツリー全体表示

【81342】Re:sumifのエラー
お礼  ms  - 20/6/7(日) 13:43 -

引用なし
パスワード
   ▼BJ さん:
>ああ、
>Sumif 関数はセルを返すわけではないので、Set が出来ない。

BJさん、返信ありがとうございました。
結果、setを使わないで一旦計算結果をシートに出力することにしました。

最後0.5乗するとオーバーフローを起こしてしまっているのですが、
それは改めて質問に挙げることにします。
・ツリー全体表示

【81341】Re:エラーが表示されたらBeep音で知らせる
お礼  pollock  - 20/6/5(金) 14:14 -

引用なし
パスワード
   BJ様

教えて頂いた情報を元に、試行錯誤をしていました。
お陰様で、以下のコードによって「エラーが表示されたらBeep音で知らせる」が叶いました。
プロシージャ名には名前以上の意味と機能が備わっていたのですね。とても勉強になりました。ありがとうございました。

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim r As Range, i As Integer
  If Not Intersect(Target, Range("AE17:AE116")) Is Nothing Then
    If Target.Offset(, -7).Value = "***" Then
    Beep
    End If
  End If
End Sub
・ツリー全体表示

【81340】Re:sumifのエラー
発言  BJ  - 20/6/5(金) 13:14 -

引用なし
パスワード
   ああ、
Sumif 関数はセルを返すわけではないので、Set が出来ない。
・ツリー全体表示

【81339】Re:sumifのエラー
質問  ms  - 20/6/5(金) 13:01 -

引用なし
パスワード
   ▼BJ さん:
>等幅にすると拡大しなくても見えますね。

これは恥ずかしいミスをしてしまいました。
ご指摘ありがとうございます。

早速、指摘された箇所のWorksheet.functionをworksheetfunctionに直して試してみましたが、.Sumifのところが指摘され、「コンパイルエラー オブジェクトが必要です」という表示が出てきました…。

これを解決するにはどうしたら良いのでしょうか?
・ツリー全体表示

【81338】Re:sumifのエラー
発言  BJ  - 20/6/5(金) 12:47 -

引用なし
パスワード
   等幅にすると拡大しなくても見えますね。
・ツリー全体表示

【81337】Re:sumifのエラー
発言  BJ  - 20/6/5(金) 12:04 -

引用なし
パスワード
   ずれた

>Set f = Worksheet.Function.SumIf(Range("F2:F280"), g, Range("H2:H280"))
     ^^^^^^^^^^^^^^^^^^
       ↑
この部分をメモ帳でもエクセルのセルにでも張り付けて文字を拡大してみてください。
・ツリー全体表示

【81336】Re:sumifのエラー
発言  BJ  - 20/6/5(金) 12:02 -

引用なし
パスワード
   ▼ms さん:
>Set f = Worksheet.Function.SumIf(Range("F2:F280"), g, Range("H2:H280"))
     ^^^^^^^^^^^^^^^^^^
       ↑
この部分をメモ帳でもエクセルのセルにでも張り付けて文字を拡大してみてください。
・ツリー全体表示

【81335】すみません。誤字修正
発言  BJ  - 20/6/5(金) 10:37 -

引用なし
パスワード
   数式の実で
 ↓
数式だけで
・ツリー全体表示

【81334】Re:エラーが表示されたらBeep音で知らせる
回答  BJ  - 20/6/5(金) 10:35 -

引用なし
パスワード
  
難しい奴、クエリとか?
昔、日経PCに載ってた数式の実で時計表示ができるやつの部類?
私には、全然わかりませんでした。
・ツリー全体表示

【81333】Re:エラーが表示されたらBeep音で知らせる
発言  BJ  - 20/6/5(金) 10:29 -

引用なし
パスワード
   上記url先の
「外部リンクにより変更されたときに発生します。」
は、いまいち解りません。
私は、単純にセルの内容が書き換えられた時と思ってます。
・ツリー全体表示

【81332】Re:エラーが表示されたらBeep音で知らせる
発言  BJ  - 20/6/5(金) 10:15 -

引用なし
パスワード
   とりあえず、こういうところを読んだ方が解りやすいかと。

ht tps://excel-ubara.com/excelvba1/EXCELVBA425.html
・ツリー全体表示

【81331】sumifのエラー
質問  ms  - 20/6/5(金) 9:53 -

引用なし
パスワード
   以下のマクロを用いて、標準偏差を求めようとしたのですが、
sumifの所で、「エラー404 オブジェクトが必要です」と出ます。

色々ネットで検索したのですが、どう修正すれば良いのか分からない為、
ここで質問させていただきます。
基本的な知識が欠如しているのは重々承知でございます。
どなたか知恵をお貸しください。

使用しているシートには
F列:割振番号(1〜30)
G列:計算したいデータ(1行目はラベル、データ数255〜280程度、たまに抜け有)
Q列:averageifで出した割振番号毎のデータの平均値


Sub 標準偏差

Dim a
Dim b
For a = 1 To 30
For b = 2 To 280
If Cells(b, 6) = a Then 'F列の割振番号がaの時
Cells(b, 8) = (Cells(b, 7) - Cells(a + 1, 17)) ^ 2 'G列の値を用いて、H列にデータの分散を計算する
End If
Next b
Next a

Dim f
Dim g
For g = 1 To 30
Set f = Worksheet.Function.SumIf(Range("F2:F280"), g, Range("H2:H280"))  '割振番号がgの時のデータの合計をfとする
Cells(g + 1, 18) = "= (""f""/ Cells(g + 1, 13)) ^ 0.5" '出力先に割振番号gの時の標準偏差を表す
Next g

End Sub
・ツリー全体表示

【81330】Re:エラーが表示されたらBeep音で知らせる
質問  pollock  - 20/6/5(金) 8:45 -

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

例(下記など、intersectで検索していくつか参考にしました)を見ると、特定のセルが変更された際に...とありましたのでこれで良いかと思っていました。
マクロ名に「_Change」をつけてみましたが...
何かヒントを頂けないでしょうか。

参考にしたコード
「特定のセル範囲が変更されたときに処理を実行する」
Private Sub Worksheet_Change(ByVal Target As Range)
  If Intersect(Target, Range("A1:B5")) Is Nothing Then
    Exit Sub
  Else
    MsgBox "セルの値が変更されました"
  End If
End Sub
・ツリー全体表示

【81329】Re:エラーが表示されたらBeep音で知らせる
発言  BJ  - 20/6/4(木) 22:45 -

引用なし
パスワード
   ▼pollock さん:
>上から順に入力した際に、

ええと、入力した際って、入力してもうんともすんとも動かないのでは・・・。
手本にしたプログラムがどういう所で使われているのか理解してますか?
・ツリー全体表示

【81328】Re:不要行の削除の高速化をしたい
発言  マナ  - 20/6/4(木) 19:17 -

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

>高速化する手法はありますでしょうか?
>やはりデータが多すぎて無理でしょうか?

遅いことが問題なだけで、
正しい結果は得られているということですか。
ならば、現在のコードを提示してください。
・ツリー全体表示

【81327】Re:エラーが表示されたらBeep音で知らせる
質問  pollock  - 20/6/4(木) 18:24 -

引用なし
パスワード
   ※作業内容の説明:訂正
測定値をAE列(17〜116行が対象セル)の上から順に入力した際に、エラー値だった場合には同じ行のX列に「***」が表示されるようになっています(関数を使用)。「AE列に入力後、同じ行のX列を確認して「***」だった場合に音を出す」ことを目的としたマクロを作成しています。

お知恵をお貸しください。

>>If Not Intersect(Target, Range("AE17:AE116")) Is Nothing Then
この行では、「AE行に入力したときに...」という条件を付けている、つもりです。誤った使い方でしょうか??
・ツリー全体表示

【81326】Re:エラーが表示されたらBeep音で知らせる
発言  BJ  - 20/6/4(木) 18:08 -

引用なし
パスワード
   ▼pollock さん:
>  If Not Intersect(Target, Range("AE17:AE116")) Is Nothing Then

上のコードは、何をしてるんですか?
何をしているのか理解すれば解ると思います。
・ツリー全体表示

【81325】不要行の削除の高速化をしたい
質問  初心者 E-MAIL  - 20/6/4(木) 17:48 -

引用なし
パスワード
   7万行、15列あるデータがあり、まずオートフィルで削除対象を絞り、Selection.End(xldownを使って、表示されている列を一番下まで選択して削除し、
さらに、重複データを削除するというマクロを組んでみたのですが、この作業だけで5分以上掛かってしまいます。

高速化する手法はありますでしょうか?
やはりデータが多すぎて無理でしょうか?
・ツリー全体表示

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