Excel VBA質問箱 IV

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

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


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

【82193】Re:VBA
発言  マナ  - 23/8/28(月) 14:51 -

引用なし
パスワード
   ▼いとう さん:

    A    B     C   D
1  品目CD  計上日   単価  金額
2  ばなな 2022/8/31  110  110
3  ばなな 2022/8/31  100  -100
4  ばなな 2022/8/3   100  200
5  ばなな 2022/8/2   100  100
6  ばなな 2022/8/1   100  100

まずは下記で行われていることを理解する必要があります。

Sub test2()
  Dim v, a
 
  v = Cells(1).CurrentRegion.Value
   a = Array(1, 2, 4, 6) '抽出する行

  v = Application.Index(v, Application.Transpose(a), Array(1, 2, 3, 4))
  Worksheets.Add.Cells(1).Resize(UBound(v), 4).Value = v

End Sub
・ツリー全体表示

【82192】Re:VBA
発言  いとう E-MAIL  - 23/8/28(月) 9:41 -

引用なし
パスワード
   マナ様
成功しました。ありがとうございます。すごいです!

もしよろしければ勉強不足のである私に各プログラムの意味を記載して
いただけませんでしょうか。初めて知った部分もあるので知識をつけたく
なってしまいました。

まだお付き合いいただけますようでしたら、よろしくお願いいたします。
・ツリー全体表示

【82191】Getattr関数 エラー 76
質問  t.T  - 23/8/26(土) 10:17 -

引用なし
パスワード
   お願いいたします。
windows10にて、cドライブのtempフォルダないにtest.cstはエクスプローラ上、存在します。

しかしながら、Getattr関数 を実行するとエラー76が表示されます。
同じマクロとフォイルに対して他の方のPCでは問題ありません。

私のwindows環境に問題があるとしか考えられずどこの設定に相違があるか途方にくれております。

どなたか確認すべき箇所などご教示頂けると幸いです。
・ツリー全体表示

【82190】Re:VBA
発言  マナ  - 23/8/24(木) 16:09 -

引用なし
パスワード
   ▼いとう さん:

データは計上日で降順ソートされている前提


Option Explicit

Sub test()
  Dim dic As Object, aryl As Object
  Dim 品目CD As String, 単価 As Long, 金額 As Long
  Dim v, i As Long, k As String
  
  v = Cells(1).CurrentRegion.Value
  
  Set dic = CreateObject("scripting.dictionary")
  Set aryl = CreateObject("system.collections.arraylist")
  
  For i = UBound(v) To 2 Step -1
    品目CD = v(i, 1)
    単価 = v(i, 3)
    金額 = v(i, 4)
    If 金額 > 0 Then
      k = 品目CD & vbTab & 単価 & vbTab & 金額
      aryl.Add i
      If Not dic.exists(k) Then
      Set dic(k) = CreateObject("system.collections.stack")
      End If
      dic(k).push i
    Else
      k = 品目CD & vbTab & 単価 & vbTab & 金額 * -1
      aryl.Remove dic(k).pop
    End If
  Next
  
  aryl.Add 1
  aryl.Reverse

  v = Application.Index(v, Application.Transpose(aryl.toarray), Array(1, 2, 3, 4))
  Worksheets.Add.Cells(1).Resize(UBound(v), 4).Value = v

End Sub
・ツリー全体表示

【82189】Re:VBA
発言  いとう  - 23/8/24(木) 13:44 -

引用なし
パスワード
   わかりにくく申し訳ありません。
これは単純に入力時に単価を間違えたという設定でした。

110円で計上しないとならないところを100円で計上してしまい、
これを-100円で相殺し、同日に110円で計上し直したということです。
・ツリー全体表示

【82188】Re:VBA
発言  マナ  - 23/8/24(木) 13:39 -

引用なし
パスワード
   ▼いとう さん:
>2と4と5を関連している計上と見ます。

これが理解できません。
なぜ、2が関連するのでしょうか。
2は単価が異なりますが?
・ツリー全体表示

【82187】Re:VBA
発言  いとう  - 23/8/24(木) 13:01 -

引用なし
パスワード
   2と4と5を関連している計上と見ます。
(4と5を相殺して新たに2を計上しています)
4と5は不要なので削除したいです。

その他は相殺するものが無いので計上日に係わらずそのまま表示させておきたいです。
・ツリー全体表示

【82186】Re:VBA
発言  マナ  - 23/8/24(木) 11:25 -

引用なし
パスワード
   ▼いとう さん:

>計上日が最新のものを残したいです。表だと関連するものが2、4、5になりますが2を残したいです。

計上日が最新のものは、1と3と6では?


   A   B     C  D
  品目CD 計上日    単価 金額
1 ばなな 2022/9/1   110  550  ←計上日が最新
2 ばなな 2022/8/31  110  110
3 ばなな 2022/8/31   130 -130  ←計上日が最新
4 ばなな 2022/8/31  100 -100
5 ばなな 2022/8/2   100  100
6 ばなな 2022/8/1   120  240  ←計上日が最新
7 ばなな 2022/8/1   130  260
・ツリー全体表示

【82185】Re:VBA
発言  いとう  - 23/8/24(木) 8:53 -

引用なし
パスワード
   マナ様
ご質問ありがとうございます。

マナ様の表ですと、4と5が相殺され表示されなくなり、2は残す結果がほしいです。1、3、6,7も残したいです。

品目CDと単価と金額(プラスとマイナス。表だと相殺できる100と-100)が一致するものを削除し、
計上日が最新のものを残したいです。表だと関連するものが2、4、5になりますが2を残したいです。

どうかよろしくお願いいたします。
・ツリー全体表示

【82184】Re:VBA
発言  マナ  - 23/8/23(水) 14:01 -

引用なし
パスワード
   ▼いとう さん:

下記の場合は、どんな結果になればよいですか

   A   B     C  D
  品目CD 計上日    単価 金額
1 ばなな 2022/9/1   110  550
2 ばなな 2022/8/31  110  110
3 ばなな 2022/8/31   130 -130
4 ばなな 2022/8/31  100 -100
5 ばなな 2022/8/2   100  100
6 ばなな 2022/8/1   120  240
7 ばなな 2022/8/1   130  260
・ツリー全体表示

【82183】Re:VBA
発言  いとう  - 23/8/22(火) 13:54 -

引用なし
パスワード
   MK様
説明が下手ですみません。お手数掛けてしまいました。
2と3を相殺して1だけ残したいです。

3の計上日2022/8/2分を2の計上日2022/8/31で相殺して
単価の違う1だけを表示させたいです。

よろしくお願いいたします。
・ツリー全体表示

【82182】Re:VBA
発言  MK  - 23/8/22(火) 12:15 -

引用なし
パスワード
   23/8/22(火) 10:54の事例ですと、データが1と2だけの場合、
1と2は相殺関係にありますが、最新の計上日は残すので
相殺しない、ということでいいですか?
・ツリー全体表示

【82181】Re:VBA
質問  いとう  - 23/8/22(火) 10:54 -

引用なし
パスワード
   MK様返信ありがとうございます。
ご質問ですが一対一の相殺関係です。

申し訳ありませんが、昨日の表がわかりにくかったことに加え変更がございます。
計上日を追加しました。最新の計上日を残しそれ以外を一対一の関係で相殺したいです。文系女子にはもうお手上げ状態です。

   A   B     C  D
  品目CD 計上日   単価 金額
1 ばなな 2022/8/31  110  110
2 ばなな 2022/8/31  100 -100
3 ばなな 2022/8/2   100  100

ご面倒をお掛けしますが、よろしければご回答をお願いいたします。
・ツリー全体表示

【82180】Re:VBA
発言  MK  - 23/8/22(火) 10:38 -

引用なし
パスワード
   事例では、2と3、4と5というように一対一の相殺関係にありますが、
一対二、二対三というような相殺もありますか?
・ツリー全体表示

【82179】VBA
質問  いとう  - 23/8/21(月) 17:07 -

引用なし
パスワード
      A   B   C
  品目  単価 合計
1 りんご 110  110
2 りんご 100  -100
3 りんご 100  100
4 りんご  50   50
5 みかん  50   50


「品目」「単価」が一致、かつ2行目3行目のように相殺している行を
まるごと削除したいです。上記で言うと1行目しか残らないようにしたいです。

どなたか教えていただけますでしょうか。よろしくお願いいたします。
・ツリー全体表示

【82178】SSDを用いたら処理は早くなりますか?
質問  usa  - 23/8/9(水) 10:32 -

引用なし
パスワード
   教えてください。
Windows7から11へパソコンを変更したら、マクロの処理が遅くなりました。
やっている内容としては、パソコンからサーバーのmdbファイルへ読み書きをしています。
現在は通常のハードディスクのCドライブにエクセルファイルを置いていますが、これを外付けのSSDに変更するとマクロの処理は早くなるのでしょうか?
確かめたいのですが、手元にSSDがない為動作確認をすることができません。
知識がある方、教えてください。
・ツリー全体表示

【82177】Re:4桁の数値の時間データ化について
お礼  りいな E-MAIL  - 23/7/27(木) 15:01 -

引用なし
パスワード
   ありがとうございます!すごいです!!できました!
1週間色々試してダメだったので、本当に救われました。
ちょっと力技感がありますが、書ける式を足したので運用してみます。
本当にありがとうございます。

Sub test()
Dim t As String
Dim i As Long
 For i = 11 To 43
Dim g As Long
 For g = 7 To 11

  With Cells(i, g)
   t = .Value
  If Len(t) > 1 Then
   If Len(t) = 3 Then t = "0" & t
   .NumberFormatLocal = "[h]:mm"
   .Formula = Left(t, 2) & ":" & Right(t, 2)
  End If
  End With
Next
Next
End Sub
・ツリー全体表示

【82176】Re:4桁の数値の時間データ化について
発言  MK  - 23/7/27(木) 9:17 -

引用なし
パスワード
   > .NumberFormatLocal = "h:mm"

↓でお試しください。

  .NumberFormatLocal = "[h]:mm"
・ツリー全体表示

【82175】Re:4桁の数値の時間データ化について
発言  MK  - 23/7/27(木) 9:04 -

引用なし
パスワード
   [h]:mm
でしたね。

私のサンプルは24時以降の時刻には対応してません。
・ツリー全体表示

【82174】Re:4桁の数値の時間データ化について
発言  MK  - 23/7/27(木) 9:02 -

引用なし
パスワード
   参考です。

Sub test()
Dim t As String
  With ActiveCell
   t = .Value
   If Len(t) = 3 Then t = "0" & t
   .NumberFormatLocal = "h:mm"
   .Formula = Left(t, 2) & ":" & Right(t, 2)
  End With
End Sub
・ツリー全体表示

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