!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑2行に減ってるけど、同じ内容を3行に増やして貼り付けること
ExcelのVBAに関する質問スレ
コード書き込みや作成依頼もOK
次スレは>>980が立てること
無理なら細かく安価指定
※前スレ
Excel VBA 質問スレ Part75
https://mevius.5ch.net/test/read.cgi/tech/1644384272/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
Excel VBA 質問スレ Part76
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん (ブーイモ MMff-XZ6m)
2022/05/01(日) 02:23:41.78ID:2t63WK/jM981デフォルトの名無しさん (スフッ Sd43-TkQT)
2022/07/15(金) 07:03:30.04ID:ymO8mssad Sub Main()
Dim a As String
Dim i As Long, j As Long
Dim last As Long
last = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To last
a = Cells(i, 1)
For j = 1 To last
If i <> j Then a = CutWord(a, Cells(j, 1))
Next j
Cells(i, 2) = a
Next i
End Sub
Function CutWord(a As String, b As String) As String
Dim aa() As String
Dim bb() As String
Dim c As String
Dim i As Long, j As Long
aa = Split(a, " ")
bb = Split(b, " ")
For i = LBound(aa) To UBound(aa)
For j = LBound(bb) To UBound(bb)
If aa(i) = bb(j) Then Exit For
Next j
If j > UBound(bb) Then c = c & aa(i) & " "
Next i
CutWord = Trim(c)
End Function
Dim a As String
Dim i As Long, j As Long
Dim last As Long
last = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To last
a = Cells(i, 1)
For j = 1 To last
If i <> j Then a = CutWord(a, Cells(j, 1))
Next j
Cells(i, 2) = a
Next i
End Sub
Function CutWord(a As String, b As String) As String
Dim aa() As String
Dim bb() As String
Dim c As String
Dim i As Long, j As Long
aa = Split(a, " ")
bb = Split(b, " ")
For i = LBound(aa) To UBound(aa)
For j = LBound(bb) To UBound(bb)
If aa(i) = bb(j) Then Exit For
Next j
If j > UBound(bb) Then c = c & aa(i) & " "
Next i
CutWord = Trim(c)
End Function
982デフォルトの名無しさん (スッププ Sd43-jVDF)
2022/07/15(金) 07:30:27.66ID:KClfAjojd 俺のコードをいじってくれてうれしいが
Valueとったり改行いじったりしてるだけで行数減らしてるだけなんて結局マイルールのこだわりを主張してるだけなんだよな
こんな方法あるぜってのが見たいわ
>>978
6が「DOG」になる最小数という意味が不明
先頭の単語を返すだけならCutWordの最後でaとcが同じ値になったらaa(LBound(aa))を返すようにすればいいのでは
Valueとったり改行いじったりしてるだけで行数減らしてるだけなんて結局マイルールのこだわりを主張してるだけなんだよな
こんな方法あるぜってのが見たいわ
>>978
6が「DOG」になる最小数という意味が不明
先頭の単語を返すだけならCutWordの最後でaとcが同じ値になったらaa(LBound(aa))を返すようにすればいいのでは
983デフォルトの名無しさん (アウアウウー Sa09-/dRU)
2022/07/15(金) 07:47:41.51ID:9RgIX2Zba value取るのは改悪で草
984デフォルトの名無しさん (アウアウウー Sa09-DHlW)
2022/07/15(金) 08:08:12.42ID:DqNyEc18a >>964
複数回現れる単語を削除すればいいのか?
Sub X964()
Dim Sheet As Worksheet: Set Sheet = ...
Dim Dictionary As Object: Set Dictionary = CreateObject("Scripting.Dictionary")
Dim LastRow As Long: LastRow = SheetSheet.Cells(Rows.Count, "A").End(xlUp).Row
Dim Row As Long
For Row = 1 To LastRow
Dim Word As Variant
For Each Word In Split(Sheet.Cells(Row, "A").Value, " ")
If Dictionary.Exists(Word) Then
Dictionary(Word) = Dictionary(Word) + 1
Else
Dictionary.Add Word, 1
End If
Next
Next
For Row = 1 To LastRow
Dim Uniques As String: Uniques = ""
For Each Word In Split(Sheet.Cells(Row, "A").Value, " ")
If 1 < Dictionary(Word) Then
If Uniques = "" Then
Uniques = Word
Else
Uniques = Uniques & " " & Word
End If
End If
Next
Sheet.Cells(Row, "B").Value = Uniques
Next
End Sub
複数回現れる単語を削除すればいいのか?
Sub X964()
Dim Sheet As Worksheet: Set Sheet = ...
Dim Dictionary As Object: Set Dictionary = CreateObject("Scripting.Dictionary")
Dim LastRow As Long: LastRow = SheetSheet.Cells(Rows.Count, "A").End(xlUp).Row
Dim Row As Long
For Row = 1 To LastRow
Dim Word As Variant
For Each Word In Split(Sheet.Cells(Row, "A").Value, " ")
If Dictionary.Exists(Word) Then
Dictionary(Word) = Dictionary(Word) + 1
Else
Dictionary.Add Word, 1
End If
Next
Next
For Row = 1 To LastRow
Dim Uniques As String: Uniques = ""
For Each Word In Split(Sheet.Cells(Row, "A").Value, " ")
If 1 < Dictionary(Word) Then
If Uniques = "" Then
Uniques = Word
Else
Uniques = Uniques & " " & Word
End If
End If
Next
Sheet.Cells(Row, "B").Value = Uniques
Next
End Sub
985デフォルトの名無しさん (アウアウウー Sa09-DHlW)
2022/07/15(金) 08:10:06.84ID:DqNyEc18a >>973
気持ち悪いとは思わないけどちょっと非効率かなとは思う
気持ち悪いとは思わないけどちょっと非効率かなとは思う
986デフォルトの名無しさん (ワッチョイ cbda-VQN5)
2022/07/15(金) 08:49:49.31ID:pxeFAKZo0 そのコードカッケェ!
987デフォルトの名無しさん (スフッ Sd43-TkQT)
2022/07/15(金) 09:42:45.28ID:D6klNH8hd Sub sample3()
Dim r As Long
Dim z As Long '最終行
Dim s As String '全データ
Dim a() As String '単語リスト
Dim i As Long
z = Cells(Rows.Count, 1).End(xlUp).Row
For r = 1 To z
Cells(r, 2) = Cells(r, 1)
s = s & Cells(r, 1) & " "
Next r
a = Split(s, " ")
For i = LBound(a) To UBound(a)
If Len(s) - Len(a(i)) > Len(Replace(s, a(i), "")) Then '2回以上出てくるか
For r = 1 To z
Cells(r, 2) = Trim(Replace(Cells(r, 2), a(i), "")) '各セルから削除
Next r
End If
Next i
End Sub
Dim r As Long
Dim z As Long '最終行
Dim s As String '全データ
Dim a() As String '単語リスト
Dim i As Long
z = Cells(Rows.Count, 1).End(xlUp).Row
For r = 1 To z
Cells(r, 2) = Cells(r, 1)
s = s & Cells(r, 1) & " "
Next r
a = Split(s, " ")
For i = LBound(a) To UBound(a)
If Len(s) - Len(a(i)) > Len(Replace(s, a(i), "")) Then '2回以上出てくるか
For r = 1 To z
Cells(r, 2) = Trim(Replace(Cells(r, 2), a(i), "")) '各セルから削除
Next r
End If
Next i
End Sub
988デフォルトの名無しさん (アウアウウー Sa09-jVDF)
2022/07/15(金) 09:47:20.06ID:kfkt8EAfa 効率どうこう言う前に重複した単語がでるような関数はどうかと思うのw
989デフォルトの名無しさん (スプッッ Sd43-iSZE)
2022/07/15(金) 13:22:47.81ID:kd+ZBNkRd ここでRuby馬鹿がRubyではこうなるとか書くのは見えている
990デフォルトの名無しさん (ワッチョイ 4bda-TkQT)
2022/07/15(金) 19:00:37.71ID:f/pTHFXb0 オレンジ色のオレンジはどうなの?
991デフォルトの名無しさん (ワッチョイ cbda-VQN5)
2022/07/15(金) 19:14:37.65ID:pxeFAKZo0 どんなに良コード書いても難癖付けられるのがこのスレ
992デフォルトの名無しさん (ワッチョイ 05da-k1yI)
2022/07/16(土) 02:37:29.28ID:hVvvoOFI0 userformをshowした直後にunloadするとexcelが落ちるのは何とかならんかのぉ
hideじゃだめなんじゃunloadじゃないと
hideじゃだめなんじゃunloadじゃないと
993デフォルトの名無しさん (ワッチョイ 9d5f-GsVe)
2022/07/16(土) 07:52:34.81ID:1SMMBEmo0 UserForm1.Show vbModeless
Unload UserForm1
って意味なら、別に落ちなかったけど
Unload UserForm1
って意味なら、別に落ちなかったけど
994デフォルトの名無しさん (ワッチョイ 5a42-PUxa)
2022/07/16(土) 08:52:29.38ID:eHBMNsDF0 逆になんでhideじゃダメなの
995デフォルトの名無しさん (ワッチョイ 912f-cIkS)
2022/07/16(土) 13:26:34.40ID:NLVpHfZz0 とりあえずEXCELが落ちるっていうコードと環境出せ
話はそれからだ
話はそれからだ
996デフォルトの名無しさん (ワッチョイ 762c-lpz1)
2022/07/16(土) 18:00:44.38ID:2WLM14wy0 >>978
Ruby で作った
require "csv"
input_str = <<"EOT"
RED,BLUE,APPLE
RED,BLUE,BANANA
RED,BLUE,GREEN,ORANGE
RED,BLUE,YELLOW,WHITE,GRAPE
RED,BLUE,WHITE,CHERRY
DOG,CAT,RABBIT,COW,BEAR
EOT
csv = CSV.new( input_str )
input_ary = csv.read # 2次元配列
# 各単語の出現回数を数える。Hash の初期値は、0
hash = input_ary.each_with_object( Hash.new( 0 ) ) { |row, hash|
row.each { |word| hash[ word ] += 1 }
}
# 出現回数が2以上の単語を削除する
input_ary.map! { |row|
row.delete_if { |word| hash[ word ] >= 2 }
row
}
# 2次元配列を、CSV 文字列に変換する
csv_str = input_ary.map( &:to_csv ).join
puts csv_str
Ruby で作った
require "csv"
input_str = <<"EOT"
RED,BLUE,APPLE
RED,BLUE,BANANA
RED,BLUE,GREEN,ORANGE
RED,BLUE,YELLOW,WHITE,GRAPE
RED,BLUE,WHITE,CHERRY
DOG,CAT,RABBIT,COW,BEAR
EOT
csv = CSV.new( input_str )
input_ary = csv.read # 2次元配列
# 各単語の出現回数を数える。Hash の初期値は、0
hash = input_ary.each_with_object( Hash.new( 0 ) ) { |row, hash|
row.each { |word| hash[ word ] += 1 }
}
# 出現回数が2以上の単語を削除する
input_ary.map! { |row|
row.delete_if { |word| hash[ word ] >= 2 }
row
}
# 2次元配列を、CSV 文字列に変換する
csv_str = input_ary.map( &:to_csv ).join
puts csv_str
997デフォルトの名無しさん (アウアウウー Sa39-eHP4)
2022/07/16(土) 19:45:04.74ID:vYu+PcKIa >>996
廃止決定した言語じゃん
廃止決定した言語じゃん
998デフォルトの名無しさん (ワッチョイ 5ada-XFSu)
2022/07/17(日) 00:22:00.69ID:lEW2LcQY0 あんたら色んな言語を習得していてエリートなんだな?
5ちゃんねるなんかにいてもったいねーわ
5ちゃんねるなんかにいてもったいねーわ
999デフォルトの名無しさん (ワッチョイ 05da-k1yI)
2022/07/17(日) 02:44:22.32ID:rPHWMq+g01000デフォルトの名無しさん (ワッチョイ 5a63-4HbS)
2022/07/17(日) 04:50:23.78ID:fLi6s9i70 こいつの書くコード、rubyとしてもクソコードなのがほんとひどい
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 77日 2時間 26分 42秒
新しいスレッドを立ててください。
life time: 77日 2時間 26分 42秒
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 「中国側も日本機のレーダーを感知していた」 中国メディアが報道 [♪♪♪★]
- 【YouTuber】バイク事故で入院のゆたぼん、振込で「お見舞金」募る [muffin★]
- 高市早苗首相、消費税減税に後ろ向き 足かせはレジシステム? 「責任ある積極財政」期待高いが [蚤の市★]
- 堀江貴文、キャッシュレス非対応の店にモヤッ 『PayPay』立ち上げの人物にまさかの直談判「現金決済しかできないんだけど…」 [冬月記者★]
- 低所得層のマクドナルド離れが深刻に 広がる「ファストフード格差」の真相 米国 [少考さん★]
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★7 [七波羅探題★]
- 防衛省、中国を完全論破www 「事前通告があったのは海自であって空自ではない」 高市早苗勝利 [175344491]
- 中国がここまで過敏になるのは日本に前科があるから。盧溝橋、満州事変。ジャップの先制攻撃は挙げればキリがないけど [472617201]
- フェミってどうして何でも性的性的ってうるさいの?
- 乳首触らんと立たないやつ
- セブイレ店員だけど昨日発売の商品が美味すぎたから宣伝いいっすか?
- 今ちんちん握りながら緊急でスレ立ててます🥺
