Excel VBA 質問スレ Part79(ワッチョイあり)

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ aaa4-I2zm)
垢版 |
2023/01/28(土) 12:12:12.41ID:UjlIZ1Ov0
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を3行貼り付けること

ExcelのVBAに関する質問スレ
コード書き込みや作成依頼もOK

次スレは>>980が立てること
無理なら細かく安価指定

※前スレ
Excel VBA 質問スレ Part77
https://mevius.2ch.net/test/read.cgi/tech/1658009255/
Excel VBA 質問スレ Part78
https://mevius.2ch.net/test/read.cgi/tech/1667104996/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2023/01/28(土) 12:23:13.98ID:+RlrKkV4M
Excel VBA 質問スレ Part79
https://mevius.5ch.net/test/read.cgi/tech/1674874007/
2023/01/28(土) 12:40:41.67ID:NqcfPhRT0
>>1
4デフォルトの名無しさん (アウアウウー Sa47-B/zI)
垢版 |
2023/01/28(土) 15:04:00.65ID:uWWFw1N+a
1gj
5デフォルトの名無しさん (ワントンキン MM8a-bQbc)
垢版 |
2023/01/28(土) 15:34:06.67ID:YZOoYTJxM
わかった気で勘違いしている馬鹿の間違いや馬鹿さ加減を指摘するとスレが荒れるので無視しましょう
最近では零細企業のあれです
6デフォルトの名無しさん (ワッチョイ 9a02-5T4A)
垢版 |
2023/01/28(土) 21:43:50.55ID:cCrz+GwL0
エクセルでスクレイピングはできそうだけどね。
2023/01/28(土) 22:05:54.66ID:cCrz+GwL0
分かりづらい質問だな。
「エクセルファイルのシートにボタンを置いて、それをクリックしたら
あるアプリを立ち上げたい。これが可能ですか?」

ということかな。答えは可能。
2023/01/29(日) 01:25:58.33ID:R24XfIrD0
>>6
javascriptに丸投げする形だからそっちの知識も必要になるけどね
IE時代はVB単体で完結できたのに面倒な時代になったな!
2023/01/29(日) 09:15:12.97ID:KzySl/Bm0
httpリクエストとか、api接続とか、一般的な表計算の操作が中心の
エクセルユーザーの範囲外なんだけど。
ただ、ExcelでなくてGoogleスプレッドシートはapi接続に相性が良さそう。
クラウドにアプリがあるっていうのは、それだけ優位な気がする。
会社での表計算もほとんど、ExcelでなくてGoogleスプレッドシート使うようになってきて、
今Excelとして残っているのは、過去開発されたマクロで運用する箇所があるから。
こんなことになるとは数年前には思っていなかった。
2023/01/29(日) 09:19:56.22ID:KzySl/Bm0
VBAとGASどっちもできるようになるといいね。
2023/01/29(日) 10:26:38.51ID:nRF7bUNu0
A列セルに3桁のアルファベットと番号(AAA 1000)、B列セルに金額が入っており
A列セルは番号部分が同セル内に/で区切られ増えるパターンあり(AAA 1000/1001/1002)
これを/がある場合は/で区切り、番号ごとに行を追加して
更にB列の金額も追加した行数で分割するといったことを最終行まで繰り返し処理したいのですが

    A列      B列
AAA 1000/1001  1,000
       ↓↓↓
    A列      B列
AAA 1000      500
AAA 1001       500

金額を行数で分割する方法と
番号ごとに行を追加した時にアルファベットAAAを番号前に追加するにはどうすればよいでしょうか。
2023/01/29(日) 10:28:09.50ID:nRF7bUNu0
続き
コードはこれなのですが
どうかよろしくお願いします

Dim i As Long
Dim n As Long
Dim LastRow As Long
Dim SplCell As String
Dim temp As Variant
Dim AddRow As Long

LastRow = Cells(Rows.Count, 1).End(xlUp).Row

For i = LastRow To 1 Step -1
  SplCell = Cells(i, 1)
  temp = Split(SplCell, "/")
  AddRow = UBound(temp)
 If AddRow > 0 Then
  Range("A" & i + 1).Resize(AddRow).EntireRow.Insert
 End If

 For n = 0 To AddRow
  Cells(i + n, 1) = temp(n)
  Cells(i + n, 2) = Cells(i, 2)
 Next n
Next i
End Sub
2023/01/29(日) 11:46:37.73ID:WTXbQyE20
>>12

考えてみた。

Sub test()

Dim i As Long
Dim n As Long
Dim LastRow As Long
Dim SplCell(1) As String ←変更。(0)はアルファベットを格納、(1)はアルファベット以降の金額部を格納。
Dim temp As Variant
Dim AddRow As Long
Dim m As Double ←追加。行数で分割した金額。

LastRow = Cells(Rows.Count, 1).End(xlUp).Row

For i = LastRow To 1 Step -1
SplCell(0) = Left(Cells(i, 1), 4) ←追加
SplCell(1) = Mid(Cells(i, 1), 5) ←変更
temp = Split(SplCell(1), "/")
AddRow = UBound(temp)
If AddRow > 0 Then
Range("A" & i + 1).Resize(AddRow).EntireRow.Insert
End If

m = Cells(i, 2) / (AddRow + 1) 追加
For n = 0 To AddRow
Cells(i + n, 1) = SplCell(0) & temp(n) ←変更
Cells(i + n, 2) = m ←変更
Next n
Next i
End Sub
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況