advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 6614 for リンク (0.004 sec.)
[[20230226180306]]
#score: 3108
@digest: 8975d12ad977eb34dd0daff97d9196e9
@id: 93617
@mdate: 2023-02-27T01:14:00Z
@size: 5111
@type: text/plain
#keywords: 1street (29993), 諸子 (17779), 子頑 (17052), 頑鉄 (16399), newyork (15241), aaaaaaa (10572), ddddddddd (7748), indonesia (7438), 111111 (6579), textjoin (6047), 更. (4166), 終列 (2988), 所1 (2765), ンマ (2635), カン (2431), ーキ (2422), 所2 (2406), mr (2023), xltoleft (2021), 住所 (1686), 最終 (1684), 付加 (1674), temp (1654), バラ (1520), 終行 (1289), cells (1145), 最後 (1109), ラバ (1027), 2023 (904), 日) (856), ル範 (755), 先頭 (741)
『列数がバラバラのセルの結合の仕方』(ky)
お力をお貸しください。 G1のセルから住所1,住所2、住所3、住所4...のデータがいきなり入っているデータがあります。(便宜上、住所1,住所2 等で表記いたしましたが、下記のようにデータがいきなり入っています。) 1 | | 111111 | 1street |aaaaaaa |NewYork | NY | USA 2 | | 222222 | 2street |bbbbbb |London | |UK 3 | | 3333333 |3sterrt |cccccc |ddddddddd |indonesia | 4 | |4444 |hyogo |kobe | | | 5 | |55555 |5sterrt | | | | ・ ・ ・ ・ これを,一つ前のF列に","でつなげてコピーしたいのです。 例えば、1行目だと、 111111,1street,aaaaaaa,NewYork,NY,USA という最後の,は取り除いた形にしたいのです。 関数でコピーとも考えたのですが、ファイル数が多いのと、シートによって バラバラで時間がかかるかと思い、下記のようなVBAを作ってみたのですが、 うまくいきません。 Dim MR As Long Dim MC As Long Dim a As Range Dim b As String MR = Cells(Rows.Count, 7).End(xlUp).Row '最終行 MC = Cells(7, Columns.Count).End(xlToLeft).Column '最終列 Dim i As Integer For i = 1 To MR b = "" For Each a In Range(Cells(i, 7), Cells(i, MC)) b = b & a.Text & "," Next a Cells(i, 6).Value = b Next i どうやってもG列とH列の2つしかとってこず、H列が空欄でも","でつなげてしまい、最後の","も取れません。 111111,1street, となります。 最終行の取得はうまくいっている(ように見える)のですが。 どこがおかしいのでしょうか? できれば最後の","ととる方法もご教授いただければ幸いです。 先頭のデータG1から始まっているのは固定です。 よろしくお願いいたします。 < 使用 Excel:Excel2019、使用 OS:Windows10 > ---- excel2019ならTEXTJOIN関数を使えば簡単にできます。 複数シートでも、作業グループにして、絶対に使用しない列に =TEXTJOIN(",",TRUE,セル範囲) として下にコピーすればすぐ終わると思います。 セル範囲は、開始列から数式を入れる列の手前まで設定すれば間違いないでしょう。 (フォーキー) 2023/02/26(日) 18:56:32 ---- すみません、質問を読み間違えてました。 G列以降にデータがあって、F列に結合したデータを、ですね。 上の回答をF列に数式、セル範囲を「G列から全シート中一番右の列」に変更してください。 (フォーキー) 2023/02/26(日) 19:03:44 ---- VBAならこんな感じ Sub test() Dim i As Long For i = 1 To ThisWorkbook.Worksheets.Count With Worksheets(i).Range("F1:F100") '実際の最終行に変更 .Formula = "=TextJoin("","",True,G1:Z1)" '実際の最終列に変更 .Value = .Value End With Next End Sub (フォーキー) 2023/02/26(日) 19:17:50 ---- Option Explicit Sub test() Dim MR As Long Dim b As String Dim temp As Long Dim i As Long, j As Long MR = Cells(Rows.Count, 7).End(xlUp).Row '最終行 For i = 1 To MR b = "" temp = Cells(i, Columns.Count).End(xlToLeft).Column - 6 For j = 7 To temp + 7 b = b & Cells(i, j).Value & "," Next Cells(i, 6).Value = b Next End Sub (諸子頑鉄) 2023/02/26(日) 19:24:43 ---- 既に提示のある、TEXTJOINを使う方が良いと思います。 あえて御提示のコードを改善するなら以下の様な感じでしょうか。 MR = Cells(Rows.Count, 7).End(xlUp).Row '最終行 For i = 1 To MR MC = Cells(i, Columns.Count).End(xlToLeft).Column '最終列 b = "" For Each a In Range(Cells(i, 7), Cells(i, MC)) If Not a = "" Then b = b & "," & a.Text End If Next a Cells(i, 6).Value = Mid(b, 2) Next i 行毎に最終列を求めるのと、 カンマで区切る場合、例えば「,111111,1street,aaaaaaa・・・・」の様に、 先頭にカンマが付くようにして、MID関数で2文字めから取得するのが常套手段かと思います。 (すいとん) 2023/02/26(日) 20:38:33 ---- 修正しました。 (最後に不必要なカンマが付加されないように) Option Explicit Sub test() Dim MR As Long Dim b As String Dim temp As Long Dim i As Long, j As Long MR = Cells(Rows.Count, 7).End(xlUp).Row '最終行 For i = 1 To MR b = "" temp = Cells(i, Columns.Count).End(xlToLeft).Column For j = 7 To temp If j <> temp Then b = b + Cells(i, j).Text & "," Else b = b + Cells(i, j).Text End If Next Cells(i, 6).Value = b Next End Sub (諸子頑鉄) 2023/02/27(月) 09:29:09 ---- 皆様ご回答ありがとうございます。 フォーキー様 TEXTJOIN関数というものができているのですね。 10年ぶりくらいにexcelをさわったので、concatenateしか思い浮かばず... これ、全部繋げるのか...と泣きそうになっていました。 諸子頑鉄様 カンマが付加されない修正分までありがとうございます。 最後と最後じゃないのを分岐すればよかったんですね。 すいとん様 行ごとに最終列を求めるのはFor Nextの中で行うのですね。 MRの下に書いているので、大丈夫かと思っていました。 カンマ区切りの場合、先頭にカンマ...なるほど、そうすると最後のカンマはつかない。 分かりやすい説明ありがとうございます。 皆様、本当にありがとうございました。 (ky) 2023/02/27(月) 10:14:00 ...
http://www.excel.studio-kazu.jp/wiki/kazuwiki/202302/20230226180306.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97000 documents and 607830 words.

訪問者:カウンタValid HTML 4.01 Transitional