advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 1385 for ������������ #N/A (0.016 sec.)
[[20181229112524]]
#score: 6930
@digest: 2dc76fdb248c49b2665218a95c563272
@id: 78241
@mdate: 2018-12-30T03:54:44Z
@size: 7132
@type: text/plain
#keywords: アf (13718), アd (12932), 計( (12750), 分3 (9587), buf2 (8340), セニ (7884), myary (7742), 分1 (7510), 区分 (7437), 分2 (6569), ニョ (5435), 見苦 (4742), caller (4732), mya (4217), 囲as (4142), 計= (4014), 囲. (3873), transpose (3484), 計列 (3392), マジ (3252), 計a (3216), 社c (3081), 集計 (2728), soulman (2298), lbound (2132), 2018 (1937), 土) (1803), ubound (1723), evaluate (1641), typename (1504), variant (1500), preserve (1442)
『区分ごとに並び替え』(前)
お世話になります。 区分ごとの名簿をD列の集計列に区分1、区分2、区分3の順番で並べるにはどうすれば良いですか? A B C D 1 区分1 区分2 区分3 集計 2 a c e a 3 b d f b 4 c d e f また、下のように区分1に"g"が追加されたら集計列もbとcの間に入るようにしたいです。 A B C D 1 区分1 区分2 区分3 集計 2 a c e a 3 b d f b 4 g g c d e f よろしくお願いします。 < 使用 Excel:Excel2010、使用 OS:Windows7 > ---- 掟破りのユーザー定義関数! ちょっと多めに範囲を選択して、 表示する時もちょっと多めに範囲を選択した状態でCtrl+Shift+Enterで確定します。 一応↓こんな感じになりました(^^; =集計(A2:C7) 区分1 区分2 区分3 集計 a c e a a =集計(A2:C7) b d f b b g ア D社 c g f d c e d f ア f e f D社 #N/A #N/A #N/A #N/A #N/A Option Explicit Function 集計(ByVal 範囲 As Range) As Variant Dim MyA As Variant Dim MyAry() As Variant Dim i As Long Dim j As Long Dim k As Long MyA = 範囲.Value For j = LBound(MyA, 2) To UBound(MyA, 2) For i = LBound(MyA, 1) To UBound(MyA, 1) If MyA(i, j) <> "" Then k = k + 1 ReDim Preserve MyAry(1 To k) MyAry(k) = MyA(i, j) End If Next Next 集計 = Application.Transpose(MyAry) End Function そりゃないぜ!セニョーラ!セニョリータ! v(=∩_∩=)v (SoulMan) 2018/12/29(土) 14:07 ---- こんにちは ^^ めっちゃ力わざですけど。。。VBA シート2も作業でつかいましたので。。。まるごとふっとびます(消える)^^; buf2の初期化は無駄かもですが(。。。用心の為 A^_^;) 新規BOOKでお試しを Option Explicit Sub main() Dim s1 As Worksheet Dim s2 As Worksheet Dim buf Dim buf2() Dim rr As Range Dim r As Range Dim y As Long Dim i As Long Dim j As Long Set s1 = Worksheets("Sheet1") Set s2 = Worksheets("Sheet2") s1.Columns(4).SpecialCells(2).Clear s2.UsedRange.Delete s1.UsedRange.Copy s2.Range("A1") s1.Columns(4).Cells(1) = "集計" With s2 y = 2 .Rows(1).Delete Set rr = s2.UsedRange For Each r In rr.Columns Debug.Print r.Address buf = r.SpecialCells(xlCellTypeVisible) If TypeName(buf) = "Variant()" Then For i = 1 To UBound(buf, 1) If buf(i, 1) <> "" Then ReDim Preserve buf2(j) buf2(j) = buf(i, 1) j = j + 1 End If Next s1.Cells(y, 4).Resize(UBound(buf2) + 1, 1) = WorksheetFunction.Transpose(buf2) y = y + UBound(buf2) + 1 ElseIf TypeName(buf) = "String" Then s1.Cells(y, 4) = buf y = y + 1 End If j = 0: Erase buf2 Next End With End Sub (隠居じーさん) 2018/12/29(土) 14:38 ---- 数式でやろうと思ったんだけど。 tb1 = Application.Transpose(Range("A2", Range("A" & Rows.Count).End(xlUp)).Value) tb2 = Application.Transpose(Range("B2", Range("B" & Rows.Count).End(xlUp)).Value) tb3 = Application.Transpose(Range("C2", Range("C" & Rows.Count).End(xlUp)).Value) tb4 = Split(Join(tb1) & " " & Join(tb2) & " " & Join(tb3)) Range("D2").Resize(UBound(tb4) + 1).Value = Application.Transpose(tb4) (BJ) 2018/12/29(土) 14:52 ---- うわ〜〜〜マジックナンバー。。。ならぬ マジックコード(わるさはしないと思いますが、余分なものが ^^;) (隠居じーさん) 2018/12/29(土) 14:38の Debug.Print r.Address は消してくださいね m(_ _)m すみません。 来年はあやまらなくてすむようにしよぉ〜(できないかも)(#^.^#) ( ̄▽ ̄); (隠居じーさん) 2018/12/29(土) 15:17 ---- #N/Aが見苦しい場合は、↓こうすると消えました(^^; 数合わせしてね =IF(COUNTA(集計(A2:C16))<ROW()-1,"",集計(A2:C16)) 区分1 区分2 区分3 集計 a c e a a=IF(COUNTA(集計(A2:C16))<ROW()-1,"",集計(A2:C16)) b d f b b g ア D社 c g ss f j d ss y qqq e y o f o o p c d ア f qqq o p e f D社 j (SoulMan) 2018/12/29(土) 15:44 ---- >#N/Aが見苦しい場合は、 SoulManさんのを少しさわってみました >ReDim Preserve MyAry(1 To k) はやめて MyAry = Evaluate("transpose(if(a1:a" & Application.Caller.Count & "="""","""",""""))") で、どうでしょうか。 (マナ) 2018/12/29(土) 16:36 ---- こんばんは! ありがとうございます。 入れ物を .Caller.Count で数えるんですね? Niceです。勉強になりました。ありがとうございます。 これなら =集計(A2:C16) だけでいいですね(^^; ↓あってますぅ? Option Explicit Function 集計(ByVal 範囲 As Range) As Variant Dim MyA As Variant Dim MyAry() As Variant Dim i As Long Dim j As Long Dim k As Long MyA = 範囲.Value MyAry = Evaluate("transpose(if(a1:a" & Application.Caller.Count & "="""","""",""""))") For j = LBound(MyA, 2) To UBound(MyA, 2) For i = LBound(MyA, 1) To UBound(MyA, 1) If MyA(i, j) <> "" Then k = k + 1 MyAry(k) = MyA(i, j) End If Next Next 集計 = Application.Transpose(MyAry) End Function (SoulMan) 2018/12/29(土) 17:04 ---- で、私風に書くと、、、 Option Explicit Function 集計(ByVal 範囲 As Range) As Variant Dim MyA As Variant Dim MyAry() As String Dim i As Long Dim j As Long Dim k As Long MyA = 範囲.Value ReDim MyAry(1 To Application.Caller.Count) 'MyAry = Evaluate("transpose(if(a1:a" & Application.Caller.Count & "="""","""",""""))") For j = LBound(MyA, 2) To UBound(MyA, 2) For i = LBound(MyA, 1) To UBound(MyA, 1) If MyA(i, j) <> "" Then k = k + 1 MyAry(k) = MyA(i, j) End If Next Next 集計 = Application.Transpose(MyAry) End Function (SoulMan) 2018/12/29(土) 17:24 ---- 名簿なので String型でよかったですね。 (マナ) 2018/12/29(土) 17:51 ---- そうですね(^^; 私も Caller.Count を失念しておりました。 大変勉強になりました。 ありがとうございます。 これからもよろしくお願いします。 (SoulMan) 2018/12/29(土) 18:13 ---- 大変遅くなり申し訳ございません。 皆様ありがとうございます。ユーザー定義関数の知識がなく、最初は ? でしたが、無事再現出来ました。SoulManさんありがとうございました。 ひとつだけ、BJさんのコードはどこに入力すれば良いのでしょうか?シートモジュールと標準モジュールにそれぞれ入れてみましたが、どうすれば動くのかわかりません。 申し訳ございませんがご教授お願いします。 (前) 2018/12/30(日) 11:36 ---- 標準モジュール sub ・・・・ end sub は、書いてません。 (コピペでポンコードは、あまり書かないので、ほぼコピペでポンコードだけど) (BJ) 2018/12/30(日) 12:36 ---- ありがとうございます。VBAでしたら当たり前のことでした。 失礼しました。 (前) 2018/12/30(日) 12:54 ...
http://www.excel.studio-kazu.jp/wiki/kazuwiki/201812/20181229112524.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97006 documents and 608109 words.

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