Excel VBA質問箱 IV

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

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


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

【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
・ツリー全体表示

【82173】4桁の数値の時間データ化について
質問  りいな E-MAIL  - 23/7/25(火) 20:40 -

引用なし
パスワード
   書式設定なしの3桁ないし4桁の数値を[h]:mmの書式設定に変換したいです。
初心者なので色々わかる範囲で試したのですが、家庭教師に習ったのがデータの抽出までで変換がわからず、timevalueではうまくいかず…使う関数が間違っているでしょうか。
時間データとして計算しなくてはならず、数値のままだと計算が狂ってしまうのですが、調べても表示を変える方法ばかりでうまくいかないので、解決できると嬉しいです。素人が初歩的な質問ですみません。
・ツリー全体表示

【82172】Re:リストのデータ元
質問  あおこ  - 23/7/4(火) 10:54 -

引用なし
パスワード
   すみません、そもそもセルのリストって2列は設定できないんですね。

ユーザーフォームの作成は考えていないのですが、
金融機関コードの入力支援となるようなよい方法があれば
ご教示いただけると幸いです。
・ツリー全体表示

【82171】リストのデータ元
質問  あおこ  - 23/7/4(火) 10:50 -

引用なし
パスワード
   入力用シートのセルに金融機関コードを入力したときに、
当該金融機関の支店コードをリストの選択肢にしたいと考えています。

具体的には

近隣の金融機関コードと支店コード、支店名を入力した以下のような
金融機関シートが元々あるため、これを活用できればと考えています。
※支店コードは近隣のよく使用するもののみ入力されているので
 とびとびに存在しています。

  0001 0002 ・・・
1 
2    アオヤマ
3 ギンザ 
4    タバタ


55 ウエノ


900


入力シートの金融機関コードセル(F9)に 0001 が入力されたら
支店コード入力セルに(F11)に 

3 ギンザ
55 ウエノ
というリストが入るようにしたいです。       


どうやったらできるか考えたときに、
二次元配列に、支店コードと支店名を追加していって、
それをリストにセットすればよいのではと考え
以下のとおり途中まで記載しているのですが、
そもそも配列が苦手なので、ネットで調べても
応用ができず、行き詰っています。

いつもこちらの掲示板に頼ってしまっていますが、
所定の目的を達成できる方法を、ヒントでも構いませんので
ご教示いただけると幸いです。


Sub Macro1()
’試作の段階ですので、7列目の5〜最終行目にある支店名をリスト元とする処理のみ記載しています。

'
' Macro1 Macro

RETSU=5’金融機関コードの列
D_RETSU=7 ’指定の金融機関コードの存在する列
 
lastRow = Sheets("金融機関").Cells(Rows.Count, 7).End(xlUp).Row
Dim siten() As String
C = WorksheetFunction.CountA(Sheets("金融機関").Range(Sheets("金融機関").Cells(5, D_RETSU), Sheets("金融機関").Cells(lastRow, D_RETSU)))’当該金融機関コードの入力支店数
 
ReDim siten(C, 1) 
 
For i = 5 To lastRow
If Sheets("金融機関").Cells(i, D_RETSU) <> "" Then 'データがあれば、配列に追加
  
・・・ここがよくわかりません。

End If
 
Next i

’マクロの記録により記録されたコード
sheets("入力シート").Range("L11").select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=金融機関!$K$5:$K$910" ←ここに配列をセット
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.IMEMode = xlIMEModeOff
.ShowInput = True
.ShowError = True
End With
  
End Sub
・ツリー全体表示

【82170】Re:ディメンションが無効
お礼  あおこ  - 23/6/20(火) 10:22 -

引用なし
パスワード
   ▼マナ さん:
>▼あおこ さん:
>
>>タイトル行、データ行、合計行のあるデータをグループ化していまして、Aはデータ行に行く処理、Bは次のグループのタイトル行に行くために記載しています。
>
>Aの行はなくても、↓のDo While 〜Loop内で、処理されると思いました。
>
>>Do While .Cells(GYO, 1).Value <> "合計" '条件を満たしている間処理を繰り返す
>>   GYO = GYO + 1
>>Loop

確かにそうですね!
もともとあるものを継ぎ足して作ることが多いので、いろいろと無駄が多い、、。

今回いろいろ教えていただき、本当に助かりました。
ありがとうございました。
・ツリー全体表示

【82169】Re:ディメンションが無効
発言  マナ  - 23/6/16(金) 21:24 -

引用なし
パスワード
   ▼あおこ さん:

>タイトル行、データ行、合計行のあるデータをグループ化していまして、Aはデータ行に行く処理、Bは次のグループのタイトル行に行くために記載しています。

Aの行はなくても、↓のDo While 〜Loop内で、処理されると思いました。

>Do While .Cells(GYO, 1).Value <> "合計" '条件を満たしている間処理を繰り返す
>   GYO = GYO + 1
>Loop
・ツリー全体表示

【82168】Re:ディメンションが無効
お礼  あおこ  - 23/6/16(金) 10:58 -

引用なし
パスワード
   ▼マナ さん:
>>当初問題なく動いていたのですが、突然
>> cho.Copy のところで
>>「指定したディメンションは、このグラフの種類では無効です。」
>>のエラーが出るようになりました。(再実行すれば作成されますし、出ないときもあります。)
>>  Set cho = sh_A3.ChartObjects(1).Duplicate.Parent 'コピー元のグラフを複製
>
>DoEventsをこの次に移動あるいは追加してみてはどうでしょうか。
追加してみました。

全学校分のグラフを作るコードと、指定学校分を作るコードの2種類をグラフ元のデータ作成箇所以外、同じコードで作っておりまして、
よくよく調べたら、全学校分の方のみエラーが出ておりましたので、
改めて見比べたら、
Dim cho As ChartObjectを記載していませんでした。
記載したら発生しなくなりましたが、これが原因でしょうか。
いずれにせよ、宣言を忘れないようにします。

>>
>>それから、下記のコードでは、まれに応答なしになって落ちるため、
>
>同じデータで、応答なしになるのでしょうか。
そうだったのです・・。

>>コードの問題点等あればご指摘いただけませんでしょうか。
>
>>   GYO1 = GYO ' グループの先頭行→GYO1
>>   GYO = GYO + 1    ←この行は必要でしょうか?
>
Do While .Cells(GYO, 1).Value <> ""
GYO1 = GYO ' グループの先頭行→GYO1
GYO = GYO + 1 ←A
' 次の行から同じグループでない行を見つける
Do While .Cells(GYO, 1).Value <> "合計" '条件を満たしている間処理を繰り返す
   GYO = GYO + 1
Loop
GYO2 = GYO  ' 同じグループの最終行→GYO2
GYO = GYO + 1 ←B
〜省略〜
Loop

タイトル行、データ行、合計行のあるデータをグループ化していまして、Aはデータ行に行く処理、Bは次のグループのタイトル行に行くために記載しています。
元々 A学校のデータが複数行、B学校のデータが複数行、・・とあるときに、A学校のデータをグループ化するということをしたくて、ネットで見つけたコードです。
よく使用しているので、応用して作っておりますが、良い方法があれば教えていただけると幸いです。
      (1列)
(タイトル行)質問  
(データ行)A学校名
(データ行)B学校名
(データ行) ・
(データ行) ・
(合計行)  合計
※全学校分のデータ例 
※指定学校分は 「質問、A学校名、合計」の3行のデータ構成だが、今後、選択した複数校のデータをもとにグラフ化したいため、汎用性のあるグループ化を行いたい。

>>   .Range(.Cells(GYO1, 2), .Cells(GYO2, lastcol1 - 1)).Select  
>>    Set r = Selection
>ここはSelectしないで、1行にまとめてはどうでしょうか
>Set r = .Range(.Cells(GYO1, 2), .Cells(GYO2, lastcol1 - 1))
まとめてみました。ご教示ありがとうございます。

>
>グラフの個数でなく、GYOを確認してみてはどうでしょうか。
GYOを確認するよう変更してみましたが、
ご指摘いただいた点を修正したところ、繰り返しても落ちなくなりました。
何かがよかったのでしょうか??

何度もお手を煩わせてしまいましたが、何とかなりそうです。
本当にありがとうございました!
(といいつつまたお尋ねするかもしれません;。その節はご回答いただけると幸いです。)
・ツリー全体表示

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